Manifest Merger fails for appComponentFactory [duplicate]

Using Google's so called Material Design 2.0 requires you to add

implementation 'com.google.android.material:material:1.0.0-rc01'

in the app Gradle which also includes

implementation 'com.android.support:appcompat-v7:28.0.0-rc02'    

which shows conflicts

Here's what the log says

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0-rc02] AndroidManifest.xml:22:18-91   

is also present at [androidx.core:core:1.0.0-rc01] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).     Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:5:5-19:19 to override.

Even after adding that to the Manifest it shows Manifest Merger failed with multiple error


Solution 1:

This error is common nowadays:

When we get this types of error: When library is updated and providing use of AndroidX but we are using old one.

You can follow the steps to solve this:

  • Migrate your project to AndroidX:

With Android Studio 3.2 and higher, you can quickly migrate an existing project to use AndroidX by selecting Refactor > Migrate to AndroidX from the menu bar.

Note: To migrate an existing project that does not use any third-party libraries with dependencies that need converting, you can set the android.useAndroidX flag to true and the android.enableJetifier flag to false.

THIS STEP WILL DO EVERYTHING AUTOMATICALLY THAT ALL ANSWER SAYS TO DO MANUALLY

  • You can check Overview of AndroidX here.
  • More details for migration

Even If you get any other error like run-time build failed, then:

  • Invalidate cache and restart

OR

  • Clean your project

Hope it will helps to all. Thank you.

Solution 2:

To fix this you have to add the tools namespace and apply the suggested attributes to the application element recommended by the IDE.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
    package="your.package.uri">

 <application
        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/AppTheme"
        tools:replace="android:appComponentFactory"
        android:appComponentFactory="androidx">

Source

Solution 3:

Suggestion: add 'tools:replace="android:appComponentFactory"' to element at AndroidManifest.xml:5:5-19:19 to override.

If you added the tools:replace="android:appComponentFactory" and still got trouble by fixing it, create a new project, copy-paste the codes and the same dependencies in there. After that, it should be fixed i hope.


If it didn't solve the issue, try adding these two:

tools:replace="android:appComponentFactory"
android:appComponentFactory="androidx"

In AndroidManifest.xml > <application tag of course.

Solution 4:

Replace all android dependencies with androidx ones in build.gradle file.

For example:

implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
implementation 'androidx.annotation:annotation:1.0.0'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'