So, I am a beginner into Android and Java. I just began learning. While I was experimenting with Intent today, I incurred an error.
Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs
I found some solutions here and tried to implement them, but it did not work.
This is my build.gradle :
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
defaultConfig {
applicationId "com.example.rohan.petadoptionthing"
minSdkVersion 10
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
}
This is my AndroidManifest :
<?xml version="1.0" encoding="utf-8"?>
package="com.example.rohan.petadoptionthing" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Second"
/>
<activity android:name=".third"/>
<activity android:name=".MainActivity"/>
</application>
This is my first week with coding, I am sorry if this is a really silly thing. I am really new to this and did not find any other place to ask. Sorry if I broke any rules
I solved this by removing android:replace
tag
Remove <activity android:name=".MainActivity"/>
from your mainfest file. As you have already defined it as:
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
So, Manifest file showing ambiguity.
In my case i was using some annotations from jetbrains library. I removed those annotations and dependencies and it worked fine.
So please check the libraries in android code and dependencies carefully.
If after you add a Android Library Module and you get this error.
You can fix it by simple remove the android:label="@string/app_name"
from the AndroidManifest.xml
of your Android Library Module
In addition to available solutions, please check this also.
If you have set android:allowBackup="false"
in your AndroidManifest.xml
then there may be a conflict for android:allowBackup="true"
in other dependencies.
Solution
As suggested by @CLIFFORD P Y, switch to Merged Manifest
in your AndroidManifest.xml
. Android Studio will suggest to add tools:replace="android:allowBackup"
in <application />
in your AndroidManifest.xml
.
Put this at the end of your app module build.gradle:
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '25.3.0'
}
}
}}
i sloved this problem by removing below line from AndroidManifest.xml
android:allowBackup="true"
Usually occurs when you have errors in your manifest.Open AndroidManifest.xml .Click on the merged manifest tab.The errors can be seen there .Also include suggestions mentioned there.When I had a similar problem while importing com.google.android.gms.maps.model.LatLng ,it suggested me to include tools:overrideLibrary="com.google.android.gms.maps" in the application tag and the build was successful.
This error occurs because you don't have proper statements at the Manifest root such:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.test">
So you should remove additional texts in it.
If you're using multiple manifestPlaceholder
items in your build.gradle
file, you must add them as array elements, instead of separate items.
For example, this will cause a build error or compile error: "java.lang.RuntimeException: Manifest merger failed with multiple errors":
android {
...
defaultConfig {
manifestPlaceholders = [myKey1: "myValue1"]
manifestPlaceholders = [myKey2: "myValue2"] // Error!
}
}
This will fix the error:
android {
...
defaultConfig {
manifestPlaceholders = [myKey1: "myValue1", myKey2: "myValue2"]
}
}
My case i have fixed it by
build.gradle(Module:app)
defaultConfig {
----------
multiDexEnabled true
}
dependencies {
...........
implementation 'com.google.android.gms:play-services-gcm:11.0.2'
implementation 'com.onesignal:OneSignal:3.+@aar'
}
This answer releted to OnSignal push notification
this is very simple error only occur when you define any activity call two time in mainifest.xml file Example like
<activity android:name="com.futuretech.mpboardexam.Game" ></activity>
//and launcher also------like that
//solution:use only one
Happened with me twice when I refractor (Rename with SHIFT + F6) the name of a field in our files and it asks you to change it everywhere and we without paying attention change the name everywhere. For example, if you have a variable name "id" in your Java class and you rename it with SHIFT + F6. If you don't pay attention to the next dialog which will ask you wherever else it is going to change the id and you tick check all it will change all the id in your layout files from the new value.
As a newbie to Android Studio, in my case, I had moved an existing project from Eclipse to Android Studio and found that there was a duplicate definition of an activity within my Manifest.xml that hadn't been picked up by Eclipse was shown as a Gradle error.
I found this by going to the Gradle Console (bottom right of the screen).
In my case it happened for leaving some empty intent-filter inside the Activity tag
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
</intent-filter>
</activity>
So just removing them solved the problem.
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
</activity>
I solved this with Refactor -> Migrate to AndroidX
GL
In my case my application tag includes:
<application
android:name=".common.MyApplication"
android:allowBackup="false"
android:extractNativeLibs="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
tools:ignore="GoogleAppIndexingWarning"
tools:replace="android:appComponentFactory">
I resolved this issue my adding new param as android:appComponentFactory=""
So my final application tag becomes:
<application
android:name=".common.MyApplication"
android:allowBackup="false"
android:extractNativeLibs="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
tools:ignore="GoogleAppIndexingWarning"
tools:replace="android:appComponentFactory"
android:appComponentFactory="">
I encountered above issue when I tired using firebase-auth latest version as "19.3.1". Whereas in my project I was already using firebase but version was "16.0.6".
Simple Answer Cross Check :
You might be defined Same Activity multiple times in the manifest.xml file.
OR
Activity or service or receiver you have defined in the manifest.xml file which is not in your project structure.
for the past few days I was also going through the same issue. But after, a lot of research I finally found a solution for this.
In order to solve this issue, what you need to do is:
1. Check if your project's build.gradle file and the module's build.gradle file contain same versions of all dependencies.
2. Make sure, your project's compileSdkVersion, buildToolsVersion, minSdkVersion and targetSdkVersion matches the one in the modules or libraries that you have added into the project.
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "com.example.appname"
minSdkVersion 16
targetSdkVersion 25
versionCode 22
versionName "2.0.3"
}
Hope, this helps.
After seeing CLIFFORD's answer to see the error, what helped me to solve this issue was renaming 'android:namex' to 'android:name' in the intent-filter action tag. In case if the same solution helps someone else .
<activity android:name=".MainActivity">
<intent-filter>
<action android:namex="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
I was using the FirebaseUI Library
along with the Facebook SDK Library
, which was causing me the issue.
implementation 'com.firebaseui:firebase-ui-database:0.4.4'
implementation 'com.facebook.android:facebook-android-sdk:[4,5)'
And from [here][1], I got rid of this issue.
With the latest update
of FirebaseUI library, previous version of Facebook SDK is also a part of it.
If you are using the both the libraries, please remove the Facebook SDK Library.
https://github.com/firebase/FirebaseUI-Android/issues/230
UPDATE
From the Android Studio 3.0
and the later versions, app.gradle
file is required to use implementation
or api
instead of compile
for adding the dependencies to the app.
In AndroidManifest.xml
:
tools:replace="android:icon, android:theme
andxmlns:tools="http://schemas.android.com/tools
In build.gradle
:
useOldManifestMerger true
Open your gradle console, then you see gradle suggest you to add the particular line (Like: tools:replace="android:allowBackup" or tools:replace="android:label" etc). Add that line into your manifest file under tag and sync gradle, that's it.
I had a weird encounter with this problem. when renaming variable name
to user_name
, I mistakenly rename all of the name to user_name
for the project. So my xml tag <color name:"">
became <color user_name:"">
same goes for string, style, manifest too. But when I check merged manifest, it showed nothing, because I had only one manifest, nothing to find.
So, check if you have any malformed xml file or not.
Just add below code in your project Manifest application tag...
<application
tools:node="replace">
The minium sdk version should be same as of the modules/lib you are using For example: Your module min sdk version is 26 and your app min sdk version is 21 It should be same.
I was also facing same issues, and after lot of research found the solution:
- Your min sdk version should be same as of the modules you are using eg: your module min sdk version is 14 and your app min sdk version is 9 It should be same.
- If build version of your app and modules not same. Again it should same ** In short, your app
build.gradle
file and manifest should have same configurations**- There's no duplicacy like same permissions added in manifest file twice, same activity mention twice.
- If you have delete any activity from your project, delete it from your manifest file as well.
- Sometimes its because of label, icon etc tag of manifest file:
a) Add the
xmlns:tools
line in the manifest tag.b) Add
tools:replace=
ortools:ignore=
in the application tag.
Example:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.slinfy.ikharelimiteduk"
xmlns:tools="http://schemas.android.com/tools"
android:versionCode="1"
android:versionName="1.0" >
<application
tools:replace="icon, label"
android:label="myApp"
android:name="com.example.MyApplication"
android:allowBackup="true"
android:hardwareAccelerated="false"
android:icon="@drawable/ic_launcher"
android:theme="@style/Theme.AppCompat" >
</application>
</manifest>
- If two dependencies are of not same version example: you are using dependency for appcompat v7:26.0.0 and for facebook com.facebook.android:facebook-android-sdk:[4,5) facebook uses cardview of version com.android.support:cardview-v7:25.3.1 and appcompat v7:26.0.0 uses cardview of version v7:26.0.0, So there is discripancy in two libraries and thus give error
Error:Execution failed for task ':app:processDebugManifest'.
Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(26.0.0-alpha1) from [com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml:27:9-38 is also present at [com.android.support:cardview-v7:25.3.1] AndroidManifest.xml:24:9-31 value=(25.3.1). Suggestion: add 'tools:replace="android:value"' to element at AndroidManifest.xml:25:5-27:41 to override.
So by using appcompat of version 25.3.1, We can avoid this error
By considering above points in mind, you will get rid of this irritating issue. You can check my blog too https://wordpress.com/post/dhingrakimmi.wordpress.com/23
Supplement the answer Phan Van Linh. I deleted these lines:
android:icon="@mipmap/ic_launcher"
android:label="name"
Just migrate to Androidx as shown above and then set teh minimum sdk version to 26...with no doubts this works perfectly
I was facing the same problem and I've just added one line in my manifest.xml and it worked for me.
tools:replace="android:allowBackup,icon,theme,label,name">
add this line under
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@drawable/launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:screenOrientation="portrait"
android:supportsRtl="true"
android:theme="@style/AppThemecustom"
tools:replace="android:allowBackup,icon,theme,label">
Hope it will help.
The following hack works:
xmlns:tools="http://schemas.android.com/tools"
line in the
manifest tag tools:replace="android:icon,android:theme,android:allowBackup,label,name"
in the application tagThis is because you are using the new Material library with the legacy Support Library.
You have to migrate android.support
to androidx
in order to use com.google.android.material
.
If you are using android studio v 3.2 or above, simply
go to refactor ---> MIGRATE TO ANDROID X.
Do make a backup of your project.
Source: Stackoverflow.com