Android集成广告横幅遇Gradle依赖解析错误,请求协助解决
解决Android集成Google广告横幅的Gradle依赖解析错误
首先,你的错误核心原因有两个:
- 项目没有配置Google Maven仓库,而JCenter已经不再托管最新版本的Google Play Services依赖;
- 当前项目的
compileSdkVersion版本过低,无法兼容你使用的Play Services Ads版本。
让我们一步步解决:
1. 添加Google Maven仓库到项目根目录的build.gradle
Google在2017年后就将Play Services和Android Support库迁移到了自己的Maven仓库,所以必须在项目根配置中添加这个仓库,否则Gradle找不到对应版本的依赖包。
修改项目根目录的build.gradle文件:
buildscript { repositories { google() // 优先添加Google仓库 jcenter() } dependencies { // 确保Gradle插件版本至少为3.0.0,以支持Google仓库和新版依赖 classpath 'com.android.tools.build:gradle:3.0.1' } } allprojects { repositories { google() // 这里同样需要添加 jcenter() } }
2. 更新App模块的build.gradle配置
你的当前compileSdkVersion是23,而play-services-ads:15.x要求最低compileSdkVersion为26,同时需要同步升级Support库版本:
修改app模块的build.gradle:
apply plugin: 'com.android.application' android { compileSdkVersion 26 // 升级到26或更高版本(推荐28以兼容更多设备) buildToolsVersion "26.0.2" // 对应compileSdk的版本 defaultConfig { applicationId "com.onlines.mushafkareem" minSdkVersion 16 targetSdkVersion 26 // 同步升级到与compileSdk一致的版本 versionCode 19 versionName "1.1.0" multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) // 替代过时的compile关键字 testImplementation 'junit:junit:4.12' implementation 'com.android.support:appcompat-v7:26.1.0' // 与compileSdk版本匹配 // 统一依赖版本为错误提示中寻找的15.0.1,避免依赖传递导致的版本不一致 implementation 'com.google.android.gms:play-services-ads:15.0.1' }
3. 清理缓存并同步项目
完成上述修改后:
- 点击Android Studio右上角的Sync Project with Gradle Files按钮同步项目;
- 如果同步仍有问题,执行
File -> Invalidate Caches... -> Invalidate and Restart清理缓存并重启IDE; - 最后执行
Build -> Clean Project再重新构建。
补充说明
你依赖中写的是15.0.0但错误提示寻找15.0.1,这是依赖传递导致的:项目中其他依赖可能依赖了更高版本的Play Services,Gradle会自动尝试统一到最高版本,所以直接指定15.0.1可以避免版本冲突。
内容的提问来源于stack exchange,提问作者Motie Khyaoui




