Android X: tools:replace specified at line: for attribute, but no new value specified
JavaAndroidAndroid Gradle-PluginAndroid ManifestAndroidxJava Problem Overview
I have tried many solutions on this website but still, the problem is not solved. The issue is due to Android X library. When I added Android X, this issue was resolved but it opened up new issue. How to fix this issue?
Earlier this error was coming:
Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:19:5-142:19 to override.
After I added tools:replace="android:appComponentFactory"
, this error is came:
java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs
at com.android.builder.core.AndroidBuilder.mergeManifestsForApplication(AndroidBuilder.java:540)
at com.android.build.gradle.tasks.MergeManifests.doFullTaskAction(MergeManifests.java:173)
Merging Error (in Android Manifest):
> Error: tools:replace specified at line:2 for attribute > android:appComponentFactory, but no new value specified app main > manifest (this file), line 1
Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest
package="com.example"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:replace="allowBackup, android:appComponentFactory"
android:allowBackup="false">
...
<application
android:name="com.example"
android:icon="@mipmap/icon"
android:debuggable="true"
android:hardwareAccelerated="false"
android:largeHeap="true"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:allowBackup="false"
tools:ignore="GoogleAppIndexingWarning,HardcodedDebugMode">
...
Java Solutions
Solution 1 - Java
I think you are migrating to AndroidX libs.
Add below lines to gradle.properties file
android.useAndroidX=true
android.enableJetifier=true
Remove tools:replace="android:appComponentFactory"
from manifest.
Replace import from android.support.v7.app.AppCompatActivity
to androidx.appcompat.app.AppCompatActivity
in activities. Use replace in project to expedite the process of refactoring.
Solution 2 - Java
You can try adding:
android:appComponentFactory="android.support.v4.app.CoreComponentFactory"
To the tag <application >
in your manifest.
Solution 3 - Java
I got same error in my project, I have resolved it You can try it
Android Studio > Refactor > Migrate to AndroidX
Solution 4 - Java
In my case, I had updated Firebase and play services dependency, result in this issue.
Reverted back the dependency updates and the error vanished
Seems that the latest Firebase and Play Service dependencies are compatible with androidx.
Solution 5 - Java
It often happened because you used Androidx libraries and support libraries at the same time. Some 3rd-party libraries may contain support libraries and other 3rd-party libraries may contain Androidx libraries, this can also lead this problem. If you have gradle environment in you PC, try "gradlew :app:dependencies" command in the terminal of Android Studio, this command will list all libraries including 3rd-party libraries of your project, and see which library or framework used Androidx libraries and which not. Then try to upgrade old libraries used support libraries, and this problem should disappear.
Solution 6 - Java
I added below lines inside <application>
tag
tools:replace="android:appComponentFactory" android:appComponentFactory="android.support.v4.app.CoreComponentFactory"
below lines inside gradle.properties file
android.useAndroidX=true android.enableJetifier=true
Rebuild your project.
Solution 7 - Java
migrate to android x
add below lines inside
tools:replace="android:appComponentFactory"
android:appComponentFactory="android.support.v4.app.CoreComponentFactory"
then also add below lines inside gradle.properties file
android.useAndroidX=true
android.enableJetifier=true
Rebuild your project.
Solution 8 - Java
you need just add this code in gradle.properties file
android.useAndroidX=true
android.enableJetifier=true
Solution 9 - Java
In build.gradle
//noinspection GradleCompatible
implementation 'com.android.support:design:28.0.0'
In gridle.properties add following line
android.enableJetifier=true
In AndroidMenifest.xml
in
xmlns:tools="http://schemas.android.com/tools"
and in
tools:replace="android:appComponentFactory"
android:appComponentFactory="android.support.v4.app.CoreComponentFactory"
tools:targetApi="p"
Solution 10 - Java
In my case, i was facing problem because of the firebase version i was using. Downgrading the firebase version helped me.
> implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1' > implementation 'com.google.firebase:firebase-core:16.0.6'
Solution 11 - Java
Just configure your manifest application tag this way
<application
android:fullBackupContent="true"
android:usesCleartextTraffic="true"
tools:targetApi="m"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Media">
Solution 12 - Java
in my case I have problem with
tools:replace="android:usesCleartextTraffic"
I have already use AndroidX, I have already have these properties in gradle.properties
android.useAndroidX=true
android.enableJetifier=true
the problem is I forget to set the value to be true
(or it can be false
, depends on your case)
<application
android:label="myApp"
tools:replace="android:usesCleartextTraffic"
android:usesCleartextTraffic="true"> // I forget this line