My Android manifest file defines the app name as follows:
android:label="@string/app_name"
A corresponding entry for app_name exists in res/values/strings.xml
Now, in my build.gradle, I redefine the app name for beta build as follows:
buildTypes {
beta {
applicationIdSuffix ".beta"
debuggable true
resValue "string", "app_name", "MyTest Beta"
}
}
However, when I assemble the package, Gradle complains of a duplicate string resource.
I could simply remove the app_name token from string.xml. However, in that case, Android Studio reports a problem with the manifest file.
How do I fix this? Regards.
Shouldn't have to mess with a 'resValue.' You can use the debug sourceset which will allow you to redefine other strings in debug as well. Create the following file and redefine the 'app_name' string in there.
src/debug/res/values/strings.xml
Just make sure you don't have anything like the following in your build.gradle's sourceSets
debug.setRoot('build-types/debug')
I came across the same issue too.
My solution is to use Manifest-placeholder
.
<application
android:label="${APP_NAME}"
tools:replace="android:label">
In your defaultConfig
closure, set the value
defaultConfig {
addManifestPlaceholders([APP_NAME: "@string/app_name"])
}
And Change that value in your flavors.
buildTypes {
beta {
applicationIdSuffix ".beta"
debuggable true
addManifestPlaceholders([APP_NAME: "MyTest Beta"])
}
}
Drawback:
To fix that drawback, you can combine Manifest-placeholder
and resValue
, which is to create a resource use resValue
and to change android:label
to your resource.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With