Different Android app resources (icon, title …) according to gradle build type
In the usual Android development process, coding, releasing and testing, is a repetitive flux that involves generating new apk
each time a new build is done. I know, At this point everything is ordinary.
The issue is trigged when you want to have many versions of the same app, on the same device without the need to erase and reinstall the new app.
For example keeping the production release
app while testing the beta build
version, or testing the trial
version without losing the paid
or staging
versions.
- my.package.name
- my.package.name.trial
- my.package.name.paid
- my.package.name.staging
// app/build.gradle
android {
buildTypes {
release{}
trial{
applicationIdSuffix ".trial"
}
paid{
applicationIdSuffix ".paid"
}
staging{
applicationIdSuffix ".staging"
}
}
}
The manipulation is really easy; it consists on adding a custom suffix to the app package name so we could have unique names for each build type. At this step, we’ve successfully separated package names, let’s set custom names and icons for each of these items.
We will create multi directories inside the src
folder, having the same name as build types defined above on your gradle.build
file.
app
| - src
| - debug
| - trial
| - staging
| - main (default one)
These new added folders are acting like the default main
folder, they get called according to the choosed build type, do whatever changes you want.
In this example (Elbotola App), I’ve changed the title and added an orange badge to the app icon to differentiate between release
and beta
versions
That trick is really useful to keep a clean workspace, hope that improves your development workflow.
Happy coding