Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Material and appcompat Manifest merger failed in react-native or ExpoKit

I updated 'android.support:appcompat-v7' to 28.0.0.

But it brought an error from the build.

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:8:5-23:19 to override.

Then I get this error in my Logcat:

Manifest merger failed

my app.gradle:

  configurations.all {
    resolutionStrategy.force 'com.android.support:design:28.0.0'
    resolutionStrategy.force "com.android.support:support-v4:28.0.0"
    resolutionStrategy.force "com.android.support:support-media-compat:28.0.0"
  }
...
dependencies {
  implementation 'com.android.support:multidex:1.0.1'

  // Our dependencies
  implementation 'com.android.support:appcompat-v7:28.0.0'


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

how do I fix it?

I need your solutions.

Thank you in advance.

like image 341
hong developer Avatar asked Jun 18 '19 05:06

hong developer


3 Answers

Upgrading 'react-native-device-info' to version 2.1.2 fixed the error for me. See github.com/facebook/react-native/issues/25294#issuecomment-503024749

In short: the library used "services-gcm:+" as a dependency, and the latest gcm version caused this problem.

like image 53
Frank Avatar answered Nov 16 '22 05:11

Frank


The root cause is related migration to Androidx, google play service updated to androidX Thanks to MR03web This problem belongs to react-native-device-info? best option is to upgrade react-native-device-info using

yarn upgrade [email protected]
cd android && gradlew clean
react-native run-android

or if you don't want to upgrade you should exclude com.google.android.gms from react-native-device-info like this. Thanks

implementation(project(":react-native-device-info"),  {
  exclude group: "com.google.android.gms"
})
implementation "com.google.android.gms:play-services-gcm:16.0.0"
like image 13
Hussain Sherwani Avatar answered Nov 16 '22 04:11

Hussain Sherwani


Add the following to your gradle.properties then clean/rebuild

googlePlayServicesVersion=16.1.0
firebaseVersion=17.6.0
like image 7
Yinka Avatar answered Nov 16 '22 04:11

Yinka