Creating template app for multiple android apps

2019-06-13 02:03发布

So here is the thing. I want to create few apps, which they all should look exactly the same, but only one variable should change. I'm looking for a way to create one library and to import it in all the other apps, and instead of updating a lot of apps, I would be able to update just the library.

Any ideas how such thing can be accomplished? Maybe using meta-data?

Thanks

2条回答
看我几分像从前
2楼-- · 2019-06-13 02:49

Create one app using Android Studio and Gradle for Android. Create multiple product flavors for that app. Use buildConfigField to define the "variable" that changes based upon the flavor. When you build for your flavor, you get the app with the variable definition that you seek, along with anything else that you overrode in that product flavor (e.g., icon, app_name).

查看更多
贪生不怕死
3楼-- · 2019-06-13 03:05

In addition to CommonsWear's answer, which is correct if you are using Android Studio, what you require can also be achieved in Eclipse - albeit with a little more work.

You'd need to create a 'library application' (see image below) which should be your base application - i.e the app you want to be the common codebase of all the children-apps.

Source: Vogella.com

After that is completed and you should create a new Android project (a child app) that uses the base application library (see example image below)

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

Any values in a child app (i.e. strings, styles, etc) are inherited from the parent library app /res folder unless you specify new values in the child app /res folder.

e.g. if libraryapp/res/strings.xml contains

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

and childapp/res/strings.xml contains <string name="override_me">Bonjour</string>

then running the child app will return "Bonjour" rather than what was defined in the library.

As the child app is basically an empty project without activities, your child app's manifest should basically be a carbon copy of that of the library apart from the <manifest> tag which should contain the child app's package, android:versionCode and android:versionName. It can launch your library with these modified values like this:

 <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>

Being Eclipse, this is slightly more convoluted but if you manage to set up correctly, it makes creating child apps quick and easy (but just not as easy as with gradle!).

查看更多
登录 后发表回答