Manifest merger failed error
Background
When the manifest files are being merged, there is a conflict with the label
attribute.
In general, there are three types of manifest files that need to be merged into a single resulting app manifest, here in priority order :
- Product flavors and build types specific manifest files.
- Main manifest file for the application.
- Library manifest files.
Resolutions
The conflict can be resolved in one of two ways:-
Remove the conflicting label
Remove the conflicting attribute from the library (or lower-level) manifest file.
In this case, the ANDROID_APPLICATION:Library:unspecified:9:18 value=(@string/app_name)
has a @string/app_name
value defined that's different from that in the main application. So if it's not required, then remove it -- simply remove the android:label="@string/app_name"
from the library file's AndroidManifest.xml
file.
Add an attribute to allow an automatic resolution to the conflict
There are several special attribute markers (in the tools namespace) that may be used to express a specific decision for how to resolve conflicts.
In this case, to explicitly cause the main app's android:label
to override any other (e.g. library file) application labels, add the xmlns:tools="http://schemas.android.com/tools"
definition to the <manifest>
node, and tools:replace="label"
to the <application>
node.
Here is an example - use this in the main application's AndroidManifest.xml
file:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mycompany.myapp"
xmlns:tools="http://schemas.android.com/tools">
<application
android:label="@string/app_name"
tools:replace="label"/>
</manifest>
This approach would also work with any other conflicting attributes; for example if the icon
attribute was also in conflict, it could be changed to tools:replace="label, icon"
.
Give this a try:
Add this to <manifest/>
xmlns:tools="http://schemas.android.com/tools"
Add this to <application/>
tools:node="replace"
Based on this, it should override all the elements. "Replace the lower priority declaration with the annotated one."