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。如果这样做,就不会出现这样的错误。
我有早期版本的播放服务,没问题。 现在我把它更新到 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。如果这样做,就不会出现这样的错误。