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

时间:2019-07-11 12:13:06

标签: android android-gradle build.gradle

我有早期版本的Play服务,还可以。 现在,我将其更新为18.0.0,并出现许多错误:

  

清单合并失败:属性application @ appComponentFactory   值=(android.support.v4.app.CoreComponentFactory)来自   [com.android.support:support-compat:28.0.0]   AndroidManifest.xml:22:18-91也位于   [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86   值=(androidx.core.app.CoreComponentFactory)。意见建议:添加   'tools:replace =“ android:appComponentFactory”'转换为元素   在AndroidManifest.xml:8:5-35:15进行覆盖。

我的依赖项:

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。*的依赖项组合在一起。

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

1 个答案:

答案 0 :(得分:1)

发生此问题是因为最新版本的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。如果这样做,将不会发生这样的错误。