Android应用因Advertising ID采集问题遭Google Play拒审,已排查仍未解决
已经排除Firebase Analytics相关的广告ID依赖并关闭采集开关,但仍被拒,大概率是其他第三方SDK在悄悄采集广告ID,以下是针对性排查和解决方法:
一、重点检查这些第三方SDK
1. Facebook SDK
你引入的com.facebook.android:facebook-android-sdk:8.2.0默认会自动采集广告ID,必须在AndroidManifest.xml中添加配置关闭:
<meta-data android:name="com.facebook.sdk.AdvertiserIDCollectionEnabled" android:value="false"/> <meta-data android:name="com.facebook.sdk.AutoLogAppEventsEnabled" android:value="false"/>
2. Branch SDK
io.branch.sdk.android:library:3.1.0默认会获取广告ID用于归因,可通过Manifest配置禁用:
<meta-data android:name="io.branch.sdk.disableAdvertisingIdentifier" android:value="true"/>
或者在初始化代码中设置:
Branch.getAutoInstance(this).disableAdvertisingIdentifier(true);
3. Freshchat SDK
com.github.freshdesk:freshchat-android:5.1.1默认可能开启广告ID采集,初始化时手动关闭:
FreshchatConfig config = new FreshchatConfig(YOUR_APP_ID, YOUR_APP_KEY); config.setAdvertisingIdCollectionEnabled(false); Freshchat.init(this, config);
4. Amazon Fortpayment
你使用了动态版本号com.amazon:fortpayment:+:release@aar,首先固定到具体版本避免自动引入未知代码,再尝试排除广告ID相关依赖:
implementation('com.amazon:fortpayment:x.x.x:release@aar') { transitive = true exclude module: 'play-services-ads-identifier' }
同时查阅Amazon Fortpayment官方文档,确认是否有专门的禁用开关。
5. 本地aar库:deviceprint-lib-release-2.3.2.aar
这个本地库属于黑盒,建议用jadx工具反编译查看是否存在AdvertisingIdClient.getAdvertisingIdInfo调用。如果确实有,联系库提供者获取无广告ID采集的版本,或自行修改移除相关代码。
二、通用排查技巧
1. 检查依赖树
用Gradle命令定位引入play-services-ads-identifier的依赖:
./gradlew app:dependencyInsight --dependency play-services-ads-identifier
找到后直接在对应依赖中排除:
implementation 'xxx:xxx:x.x.x' { exclude module: 'play-services-ads-identifier' }
2. 反编译APK找痕迹
生成发布APK后,用jadx打开并搜索AdvertisingIdClient、getAdvertisingIdInfo关键词,定位具体调用的类和所属库,针对性处理。
3. Lint检测
在Android Studio中运行Analyze > Inspect Code,选择整个项目,检查Privacy > Advertising ID Usage项,会直接标出所有调用广告ID的代码位置。
三、最后确认
处理完成后重新打包,用Google Play的预发布报告或App Bundle Explorer中的隐私检测工具扫描,确认无广告ID采集行为后再提交审核。
内容的提问来源于stack exchange,提问作者Abed shmaytilli

