我有早期版本的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。*的依赖项组合在一起。
有什么办法解决这个错误吗?
答案 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。如果这样做,将不会发生这样的错误。