将 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
这意味着,您混淆了 support
和 androidx
依赖项。
更清楚地说,您几乎无处不在使用支持库,即在您的 app/build.gradle
中包含 com.android.support
的所有内容,但是,最新的广告库使用 Androidx
依赖项.
您可以通过将您的应用程序依赖项转换为 androidx
来修复错误,因为最新的 play-services-ads
库使用 Androidx 依赖项,或者,您可以使用旧版本的 play-services-使用支持依赖项的广告(不推荐,因为不再维护支持库)。
您可以找到如何迁移到 androidx
here。
关于您关于清单合并失败的另一个错误,您可以按照给出的答案中的说明进行修复 。
据我推测,您尝试添加的播放服务版本已更新为可与 AndroidX 工件一起使用。您的问题有 2 个解决方案:
- 降级播放服务库,但不推荐这样做,因为播放商店通常需要最新的播放服务版本。
- 将您的应用程序升级到 androidX 工件, 是在这种情况下的方法。
当我在 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
这意味着,您混淆了 support
和 androidx
依赖项。
更清楚地说,您几乎无处不在使用支持库,即在您的 app/build.gradle
中包含 com.android.support
的所有内容,但是,最新的广告库使用 Androidx
依赖项.
您可以通过将您的应用程序依赖项转换为 androidx
来修复错误,因为最新的 play-services-ads
库使用 Androidx 依赖项,或者,您可以使用旧版本的 play-services-使用支持依赖项的广告(不推荐,因为不再维护支持库)。
您可以找到如何迁移到 androidx
here。
关于您关于清单合并失败的另一个错误,您可以按照给出的答案中的说明进行修复
据我推测,您尝试添加的播放服务版本已更新为可与 AndroidX 工件一起使用。您的问题有 2 个解决方案:
- 降级播放服务库,但不推荐这样做,因为播放商店通常需要最新的播放服务版本。
- 将您的应用程序升级到 androidX 工件, 是在这种情况下的方法。