导入模块之后清单合并失败

特拉洛克-ES:

你好我正在开发一个SDK,当我添加这些SDK为应用程序proyect我得到以下错误:

清单合并失败:属性应用@ appComponentFactory值=(android.support.v4.app.CoreComponentFactory)从[com.android.support:support-compat:28.0.0]的AndroidManifest.xml:22:18-91

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

该的build.gradle是如下

应用的build.gradle

dependencies {
    implementation project(':sdkA')
    implementation project(':sdkB')

    implementation 'org.webrtc:google-webrtc:1.0.28032'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:preference-v7:28.0.0'
    implementation 'com.android.support:preference-v14:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:gridlayout-v7:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.google.android.gms:play-services-auth:16.0.1'
    implementation 'com.google.android.gms:play-services-location:16.0.0'
    implementation 'io.michaelrocks:libphonenumber-android:8.4.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.google.android:flexbox:1.0.0'
    implementation 'com.github.woxthebox:draglistview:1.6.3'
    implementation 'com.balysv:material-ripple:1.0.2'
    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.16'

    implementation('com.crashlytics.sdk.android:crashlytics:[email protected]') {
        transitive = true
    }

    // Google Lifecycle Components
    implementation "android.arch.lifecycle:extensions:1.1.1"
    annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
}

sdkA的的build.gradle

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'org.webrtc:google-webrtc:1.0.28032'

    implementation('io.socket:socket.io-client:1.0.0') {
        exclude group: 'org.json', module: 'json'
    }

    implementation('com.crashlytics.sdk.android:crashlytics:[email protected]') {
        transitive = true
    }


    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.0.0'



    // Google Lifecycle Components
    implementation "android.arch.lifecycle:extensions:1.1.1"
    annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

    implementation 'androidx.appcompat:appcompat:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

sdkB的的build.gradle

dependencies {
    implementation "com.android.support:appcompat-v7:27.1.1"
    implementation "com.android.support:recyclerview-v7:27.1.1"
}

怎样才能解决呢?

谢谢

麦克 - 詹姆斯:

好吧,我一直在处理这个问题我自己的最后一天左右。恶梦。

但我现在至少工作我一直工作在该项目是相当大,有很多额外的Android的依赖。

看到这个问题,即麦克·哈迪已经有很大的帮助。https://github.com/mikehardy/jetifier/issues/27

我会建议避免AndroidX直到0.60.0已经登陆。

问题来源对我们大多数人的问题的根源是+在gradle这个依赖范围内选择。

如这里示出为一个示例反应天然-GOOGLE-分析桥:

    compile "com.google.android.gms:play-services-analytics:${safeExtGet('googlePlayServicesVersion', '+')}"
    compile "com.google.android.gms:play-services-tagmanager-v4-impl:${safeExtGet('googlePlayServicesVersion', '+')}"

对于大多数人来说我们没有在顶级的Android /的build.gradle设置googlePlayServicesVersion值

所以我们要指定googlePlayServicesVersion = "16.+"+,因为那里有各种其他的谷歌服务封装,他们不是都在相同的版本号。这将捕获16.XX及以上不下去。17.XX举行进一步的问题。

而且我们还需要设置supportLibVersion到28.0.0所使用的是Android支持库:com.android.support:appcompat-v7最为常见。

安卓/的build.gradle

buildscript {
    ext {
        buildToolsVersion = "28.0.3"
        minSdkVersion = 21
        compileSdkVersion = 28
        targetSdkVersion = 28
        supportLibVersion = "28.0.0"
        googlePlayServicesVersion = "16.+"
    }
...

AndroidManifest.xml中顶线: <manifest xmlns:tools="http://schemas.android.com/tools"

应用标签: tools:replace="android:appComponentFactory" android:appComponentFactory="android.support.v4.app.CoreComponentFactory"

确保使用4.10.1您gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip

最后确保你不使用的Android X.

gradle.properties:

android.enableJetifier=false
android.useAndroidX=false

其他步骤(您可能需要这个)

做不到这一点不起作用尝试加入jetifier为好。我们将使用这种通过您的node_modules运行,并确保一切使用非androidx库。

npm i jetifier --save-dev 要么 yarn add jetifier --dev

然后加入后脚本

"scripts": {
   "postinstall": "jetify -r"
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章