简体   繁体   English

如何在React-Native Android中修复“清单合并失败”?

[英]How to fix 'Manifest merger failed' in react-native android?

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). 清单合并失败:[com.android.support:support-compat:28.0.0]的属性application @ appComponentFactory value =(android.support.v4.app.CoreComponentFactory)来自AndroidManifest.xml:22:18-91 [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value =(androidx.core.app.CoreComponentFactory)。 Suggestion: add 'tools:replace="android:appComponentFactory"' to element at AndroidManifest.xml:11:5-60:19 to override. 建议:在AndroidManifest.xml:11:5-60:19的元素上添加'tools:replace =“ android:appComponentFactory”'以进行覆盖。

This is after upgrading react-native version 这是在升级本机版本之后

build.gradle build.gradle

android {
    compileSdkVersion 28

    defaultConfig {
        applicationId "com.rugbyvault"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 16
        versionName "1.0"
        multiDexEnabled true
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
}
dependencies {
    implementation project(':tipsi-stripe')
    implementation project(':react-native-splash-screen')
    implementation project(':react-native-linear-gradient')
    implementation project(':react-native-keep-awake')
    implementation project(':react-native-code-push')
    implementation project(':react-native-sound')
    implementation(project(':react-native-firebase')) {
        transitive = false
    }
    implementation project(':react-native-svg')
    implementation project(':instabug-reactnative')
    implementation project(':react-native-picker')
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'com.android.support:multidex:1.0.3'
    //noinspection GradleCompatible
    implementation "com.android.support:appcompat-v7:28.0.0"
    implementation "com.facebook.react:react-native:+"  // From node_modules
    implementation "com.google.android.gms:play-services-base:17.0.0"
    implementation 'com.google.firebase:firebase-core:17.0.0'
    implementation 'com.google.firebase:firebase-auth:17.0.0'
    implementation 'com.google.android.gms:play-services-wallet:17.0.0'
    implementation 'com.google.firebase:firebase-messaging:17.0.0'
}

It seems that latest version of react-native uses AndroidX libraries. 似乎最新版本的react-native使用AndroidX库。 So you need to upgrade your dependencies (in your case: appcompat and multidex ) to AndroidX. 因此,您需要将依赖项(在您的情况下: appcompatmultidex )升级到AndroidX。

FYI: AndroidX ( androidx.* ) is new bundle of android support libraries ( com.android.support.* ). 仅供参考:AndroidX( androidx。* )是新的android支持库捆绑包( com.android.support。* )。

You should replace this lines: 您应该替换以下行:

implementation 'com.android.support:multidex:1.0.3'
implementation "com.android.support:appcompat-v7:28.0.0"

With this ones: 有了这些:

implementation 'androidx.multidex:multidex::2.0.1'
implementation "androidx.appcompat:appcompat:1.0.2"


Putting these flags in your gradle.properties can fix some relative issues: 将这些标志放在gradle.properties可以解决一些相关问题:

 android.enableJetifier=true android.useAndroidX=true 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM