使用带有最新支持库的 admob 15.0.0 时发生 Gradle 冲突

Posted

技术标签:

【中文标题】使用带有最新支持库的 admob 15.0.0 时发生 Gradle 冲突【英文标题】:Gradle conflict when using admob 15.0.0 with the lastest support library 【发布时间】:2018-09-26 22:11:48 【问题描述】:

我正在使用“com.google.android.gms:play-services-ads:12.0.1”。 和 android 支持版本 27.1.1。

当我尝试将我的广告库升级到最新版本 (15.0.0) 时,我收到一条错误消息,提示我必须使用相同的版本规范。见下图。

有没有办法为 supportLibraries 和 play-services-ads 使用最新版本?

请注意,当我使用 play-services-ads 版本 12.0.1 时,此问题不存在

【问题讨论】:

【参考方案1】:

您可以尝试通过将支持库添加到依赖项块来覆盖冲突的支持库:

implementation 'com.android.support:customtabs:27.1.1'

【讨论】:

【参考方案2】:

将所有库更改为与您的情况有冲突的最低库,将您的一些库从 27.1.1 更改为 26.1.0。

【讨论】:

【参考方案3】:

我恢复到 12.0.1

implementation 'com.google.firebase:firebase-ads:12.0.1'

在我看来,Google 需要解决这个问题。

2018 年 5 月 4 日更新:

Firebase-15.0.1 依赖于最新的 google 服务

classpath 'com.google.gms:google-services:3.3.0'

看到这个blog post

但是,当我升级 google services 3.3.0 和 firebase-15.0.1 时,我遇到了其他无法解决的问题。使用 Google-Services 3.3.0,gradle 抱怨我导入的库模块:

implementation project(':lib')

Gradle 错误:

More than one variant of project :lib matches the consumer attributes:

- Configuration ':lib:debugApiElements' variant android-aidl:
  - Found artifactType 'android-aidl' but wasn't required.
  - Required com.android.build.api.attributes.BuildTypeAttr 'debug' and found compatible value 'debug'.
  - Found com.android.build.api.attributes.VariantAttr 'debug' but wasn't required.
  - Required 
com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' and found compatible value 'Aar'.
  - Required org.gradle.usage 'java-api' and found compatible value 

所以我的建议还是不要升级。

【讨论】:

以上是关于使用带有最新支持库的 admob 15.0.0 时发生 Gradle 冲突的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Eclipse 中使用 Admob?

AdMob ARMv7s 支持

在 android 中使用带有 admob 的完全自定义视图

Admob集成到Android应用程序中

NSURLSession/NSURLConnection HTTP 加载失败和 iOS 9 的其他 AdMob 警告

AdMob + 内容显示缓慢 + Google DFP