2014-12-30 6 views
0

그래서 여기에 문제가 있습니다. 몇 가지 앱을 만들려고합니다. 모든 앱은 똑같아 보이지만 하나의 변수 만 변경해야합니다. 하나의 라이브러리를 만들고 다른 모든 응용 프로그램에서 가져올 수있는 방법을 찾고 있습니다. 많은 응용 프로그램을 업데이트하는 대신 라이브러리 만 업데이트 할 수 있습니다.여러 Android 앱용 템플릿 앱 만들기

그런 아이디어를 어떻게 완성 할 수 있습니까? 어쩌면 메타 데이터를 사용하고 있을까요?

감사

답변

2

CommonsWear's answer (올바른 ) 이외에 Android Studio를 사용하는 경우 당신도 필요로하는 것은 약간의 작업만으로도 Eclipse에서 얻을 수 있습니다.

기본 응용 프로그램이되어야하는 '라이브러리 응용 프로그램'(아래 이미지 참조)을 만들어야합니다. 즉, 모든 하위 응용 프로그램의 공통 코드베이스가되고 싶은 응용 프로그램입니다. 기본 응용 프로그램 라이브러리를 사용하여 그 후

Source: Vogella.com

이 완료되고 당신이 새로운 안드로이드 프로젝트를 생성한다 (A 자식 응용 프로그램는)

Source: Vogella.com http://www.vogella.com/tutorials/AndroidLibraryProjects/images/xlibrary30.png.pagespeed.ic.C6oekZBznQ.png

(아래 예제 이미지 참조)

하위 응용 프로그램의 모든 값 (즉 문자열, 스타일 등)은 부모로부터 상속됩니다. 라이브러리 응용 프로그램 당신이 자식 응용 프로그램/res 폴더에 새 값을 지정하지 않는/res 폴더에 있습니다.

예컨대 libraryapp/res/strings.xml

<string name="override_me">Hello</string>

childapp/res/strings.xml가 포함되어있는 경우

<string name="override_me">Bonjour</string> 후 오히려 라이브러리에 정의 된 것보다 "봉쥬르"를 반환합니다 자식 응용 프로그램 실행이 포함되어 있습니다.

자식 응용 프로그램은 기본적으로 빈 프로젝트 이므로

없는 활동은 자녀의 응용 프로그램의 매니페스트는 기본적으로 자식 응용 프로그램의 package, android:versionCode 등을 포함해야 <manifest> 태그에서 라이브러리 떨어져의의 탄소 복사해야 android:versionName.그것은이 같은이 수정 된 값으로 라이브러리를 시작할 수 있습니다 :

<activity 
     android:name="com.example.library.MainActivity" 
     android:label="@string/app_name" 
     android:launchMode="singleTop"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

존재 이클립스,이 약간 더 복잡하지만 올바르게 설정 관리하는 경우, 그것은 아이를 만들 수 있습니다 애플 리케이션 (빠르고 쉽게하지만, 그냥 gradle만큼 쉬운 것은 아닙니다!).

+0

그리고 활동은 어떻습니까? 매니페스트에서 어떻게 정의 할 수 있습니까? –

+0

@ Erez.info는 내 대답의 변화를 볼 수 있습니다. 기본적으로 라이브러리 프로젝트에서 매니페스트를 복사합니다. –

+0

thx man! 그것은 위대한 작품. 심지어 문제없이 각 응용 프로그램에 대해 다른 테마를 설정할 수 있습니다 :) –

1

안드로이드 안드로이드 Studio 및 Gradle을을 사용하여 하나의 응용 프로그램을 만듭니다. 해당 앱에 대해 복수 product flavors을 만듭니다. Use buildConfigField은 풍미에 따라 변경되는 "변수"를 정의합니다. 풍미를 키울 때 찾아야하는 변수 정의가 포함 된 앱과 해당 제품의 풍미에서 넘은 다른 요소 (예 : 아이콘, app_name)가 표시됩니다.

+0

내가 찾고있는 것이 정확하게 보이지만 나는 결코 gradle로 작업하지 않으므로 마지막 옵션으로 만 사용하게 될 것입니다. –