Search code examples
androidandroid-library

Creating template app for multiple android apps


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


Solution

  • 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
    (source: vogella.com)

    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!).