将 Google Play 服务添加到 android 应用会导致 'com.android.support and androidx.* conflict'

Adding Google Play Services to an android app results in 'com.android.support and androidx.* conflict'

当我在 Android Studio 中生成一个新的 'Empty Activity' 应用程序时,我在 app/build.gradle:

中得到以下依赖项
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'
    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.1.1'

我明白了

Dependencies using groupId com.android.support and androidx.* can not be combined but found IdeMavenCoordinates{myGroupId='com.android.support', myArtifactId='support-vector-drawable', myVersion='28.0.0', myPacking='aar', myClassifier='null'} and IdeMavenCoordinates{myGroupId='androidx.loader', myArtifactId='loader', myVersion='1.0.0', myPacking='aar', myClassifier='null'} incompatible dependencies more... (Ctrl+F1)

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 <application> element at AndroidManifest.xml:5:5-19:19 to override.

我应该做哪些更改来防止这种冲突?

您的错误不言自明。它说:

Dependencies using groupId com.android.support and androidx.* can not be combined

这意味着,您混淆了 supportandroidx 依赖项。

更清楚地说,您几乎无处不在使用支持库,即在您的 app/build.gradle 中包含 com.android.support 的所有内容,但是,最新的广告库使用 Androidx 依赖项.

您可以通过将您的应用程序依赖项转换为 androidx 来修复错误,因为最新的 play-services-ads 库使用 Androidx 依赖项,或者,您可以使用旧版本的 play-services-使用支持依赖项的广告(不推荐,因为不再维护支持库)。

您可以找到如何迁移到 androidx here

关于您关于清单合并失败的另一个错误,您可以按照给出的答案中的说明进行修复

据我推测,您尝试添加的播放服务版本已更新为可与 AndroidX 工件一起使用。您的问题有 2 个解决方案:

  1. 降级播放服务库,但不推荐这样做,因为播放商店通常需要最新的播放服务版本。
  2. 将您的应用程序升级到 androidX 工件, 是在这种情况下的方法。