未集成AdMob SDK却被谷歌检测到存在,如何排查并移除相关依赖?
解决方案
第一步:定位AdMob SDK的传递来源
- 执行gradle依赖树查询命令,针对release构建变体精准排查:
./gradlew :app:dependencies --configuration releaseRuntimeClasspath | grep "play-services-ads"
Windows系统可将./gradlew替换为gradlew.bat,该命令会直接过滤出所有依赖链中涉及AdMob相关SDK的条目,能明确看到是哪个上层依赖引入的版本14的ads包。 - 你引入的
play-services-maps和play-services-location的18.0.0版本存在传递依赖引入AdMob基础组件的可能性,部分旧版play服务组件会默认关联ads相关的依赖包。
第二步:移除不需要的AdMob依赖
如果确认是maps或者location的传递引入,直接在依赖声明中添加排除规则即可:
implementation ('com.google.android.gms:play-services-maps:18.0.0') { exclude group: 'com.google.android.gms', module: 'play-services-ads' exclude group: 'com.google.android.gms', module: 'play-services-ads-lite' } implementation ('com.google.android.gms:play-services-location:18.0.0') { exclude group: 'com.google.android.gms', module: 'play-services-ads' exclude group: 'com.google.android.gms', module: 'play-services-ads-lite' }
如果排查发现是其他第三方传递依赖引入的,对应给该依赖加上同样的exclude规则即可。
第三步:打包后验证残留
重新打release包后,用Android Studio内置的APK Analyzer打开APK文件,搜索com.google.android.gms.ads相关的包路径,如果没有匹配的类资源,就说明已经完全移除了AdMob SDK。
第四步:提交应用前的补充操作
重新提交应用到Play商店时,在内容审核声明页再次确认勾选「应用不包含广告」选项,只要APK内确实没有AdMob相关代码,就不会触发违规下架。
内容的提问来源于stack exchange,提问作者Patricks
相关产品推荐
相关产品推荐

