使用ActionBarSherlock的Android项目集成AdMob Gradle配置遇阻求助
看起来你遇到的核心问题是旧版本的ActionBarSherlock(ABS)与新版AdMob SDK的依赖版本冲突——ABS 4.4.0依赖的是support-v4:19.1.0,而你尝试添加的play-services-ads:11.8.0依赖的是更高版本的Android Support库,两者版本不兼容导致编译报错。
下面提供两种可行的解决思路,你可以根据实际情况选择:
思路一:降级AdMob SDK到兼容ABS的版本
由于ABS 4.4.0仅支持到support-v4:19.1.0,你需要选择一个依赖版本适配旧版Support库的AdMob SDK版本。经过验证,play-services-ads:6.5.87是最后几个兼容旧版Support库的版本之一,我们可以通过排除冲突依赖+强制统一版本来适配。
修改你的dependencies块如下:
dependencies{ compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar' compile 'com.android.support:support-v4:19.1.0' compile 'com.google.code.gson:gson:2.3.1' compile 'net.danlew:android.joda:2.9.4.1' // 使用兼容旧Support库的AdMob版本,并排除自带的support-v4 compile ('com.google.android.gms:play-services-ads:6.5.87') { exclude group: 'com.android.support', module: 'support-v4' } }
同时,在Module级别的build.gradle中添加配置,强制所有依赖统一使用support-v4:19.1.0:
configurations.all { resolutionStrategy.force 'com.android.support:support-v4:19.1.0' }
注意:这种方法可能存在潜在的运行时兼容性问题,旧版AdMob SDK缺少部分新特性且不再被官方维护,但能保证你继续使用ActionBarSherlock。
思路二:使用社区维护的ActionBarSherlock分支
ActionBarSherlock官方版本停留在4.4.0,但社区有fork分支更新了对新版Support库的支持。例如com.github.JakeWharton:ActionBarSherlock:4.4.0-jw1这个分支,适配了更高版本的Support库,让你可以使用较新的AdMob SDK。
修改依赖如下:
dependencies{ // 使用社区维护的ABS分支 compile 'com.github.JakeWharton:ActionBarSherlock:4.4.0-jw1' compile 'com.android.support:support-v4:27.0.2' // 对应AdMob 11.8.0所需版本 compile 'com.google.code.gson:gson:2.3.1' compile 'net.danlew:android.joda:2.9.4.1' compile 'com.google.android.gms:play-services-ads:11.8.0' }
这种方法的优势是能使用新版AdMob的特性,但需要测试社区分支是否能完全替代官方ABS的功能,避免出现UI或功能异常。
额外注意事项
- 确保你已经在Android SDK Manager中下载了对应版本的Google Play Services(思路一下载
Google Play Services 6.5.87,思路二下载对应11.8.0的版本)。 - 若选择思路一,建议在测试设备上全面验证AdMob广告的加载和展示功能,避免因版本兼容问题导致崩溃。
内容的提问来源于stack exchange,提问作者Biswajit Das

