In Android you are able to set the name of your application using the android:label
attribute of the <application>
tag in the manifest file of you app. in most cases you will add a string resource and link it there to get a translatable application name.
Working with different versions and flavors of my app I wanted to identify ‘dev’ versions by the applications name. Lets me show you how achieved this using a simple manifestPlaceholder
.
Define build type specific app names using manifestPlaceholder
1. Define the manifestPlaceholder in you build.gradle
file
The manifestPlaceholder allows you to inject variables (key-value pairs) into your AndroidManifest.xml
file that are defined in your build.gradle
file
Source: Android Developer
1 2 3 4 5 6 7 8 9 10 |
buildTypes { release { manifestPlaceholders = [ applicationLabel: "@string/app_name"] } debug { manifestPlaceholders = [ applicationLabel: "@string/app_name_dev" ] } } |
2. Use the the configured manifestPlaceholder key in your manifest file
The defined variable is injected into the manifest and will be interpreted while building the app. The correct string resource will be set in the final (generated) manifest file and depend on the current build type.
1 2 3 4 5 |
<application [..] android:label="${applicationLabel}"> |
Working with product flavors and build types
The described way to dynamically change the application label does work for product flavors, too.
If you want to combine build type and flavor dependent app names I recommend to use the method above for the build type and flavor-specific names by using explicit resource files to override the app_name
and app_name_dev
string resource for additional flavors.
- Setup the buildtype seperation as shown above.
- Create separate versions of string.xml for all the flavours.