play-services-ads:18.0.0 和 appcompat-v7:28.0.0 - 合并失败,使用 groupid com.android.support 和 androidx.* 的依赖项无法合并

play-services-ads:18.0.0 and appcompat-v7:28.0.0 - merger failed and dependencies using groupid com.android.support and androidx.* can not be combined

我有早期版本的播放服务,没问题。 现在我把它更新到 18.0.0 并且有很多错误:

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 element at AndroidManifest.xml:8:5-35:15 to override.

我的依赖项:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.anjlab.android.iab.v3:library:1.0.44'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.google.android.gms:play-services-ads:18.0.0'
}

configurations.all {
    resolutionStrategy.eachDependency {  details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion "28.0.0"
            }
        }
    }
}

implementation 'com.android.support:appcompat-v7:28.0.0' 是红色下划线,表示使用 groupid com.android.support 和 androidx.* 的依赖项不能组合。

有什么解决这个错误的想法吗?

出现此问题是因为 com.google.android.gms:play-services-ads 的最新版本(在本例中为 v18.0.0)已在使用 AndroidX,但您的应用仍在使用 Android 支持。

那么,有两种可能:

  • 降级com.google.android.gms:play-services-ads

如果您降级该库的版本,这个问题应该会得到解决,因为旧版本仍在使用支持库(而不是 AndroidX)。

您可以尝试例如:

com.google.android.gms:play-services-ads:17.2.0

HERE 你可以找到发布版本列表

  • 您应该考虑将您的应用程序迁移到 AndroidX。

支持库已弃用。所以,迟早,你将不得不搬到 AndroidX。如果这样做,就不会出现这样的错误。