使用google_mobile_ads插件上传Play Store遇AD_ID权限检测异常
Google Play提示缺失AD_ID权限但本地验证已存在的解决办法
排查方向和解决办法
1. 显式声明权限,避免合并规则干扰
虽然你已通过工具确认合并后的Manifest包含权限,但可能被其他依赖的Manifest合并策略覆盖,或是权限被设置了maxSdkVersion限制。直接在项目的android/app/src/main/AndroidManifest.xml里显式添加这条权限,强制保留:
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
如果是针对Android 13+的应用,顺带确保网络权限也存在(广告功能必需):
<uses-permission android:name="android.permission.INTERNET" />
2. 检查所有APK变体的Manifest
bundletool导出的通用APK没问题,但Google Play会生成不同架构、地区的APK变体,个别变体可能丢失权限。用bundletool导出所有变体APK逐一检查:
# 生成所有变体APK包 java -jar bundletool.jar build-apks --bundle=app-release.aab --output=all-variants.apks # 提取所有APK到指定目录 java -jar bundletool.jar extract-apks --apks=all-variants.apks --output-dir=extracted-apks
之后用Android Studio的「Analyze APK」功能逐个检查提取出的APK,确认每个的Manifest里都有AD_ID权限。
3. 排查依赖冲突
你的依赖里permission_handler: ^10.2.0可能和google_mobile_ads的权限合并存在冲突,可以试试这些操作:
- 把
google_mobile_ads升级到最新稳定版,新版本可能修复了Manifest合并的bug - 执行
flutter pub deps查看完整依赖树,排查是否有其他依赖在悄悄移除AD_ID权限 - 临时注释掉
permission_handler依赖,重新构建AAB并验证问题是否消失,定位是否是这个依赖导致的异常
4. 检查Play Console的缓存和配置
有时候Play Store的提示是缓存问题,或是应用的广告配置异常导致误判:
- 等待半小时左右重新上传AAB试试
- 进入Play Console检查应用的隐私设置和广告相关配置,确认没有禁用AD_ID的选项
5. 确保混淆规则不影响权限
如果开启了R8/ProGuard混淆,可能误删了权限相关的声明。在android/app/proguard-rules.pro里添加这条规则:
-keep class com.google.android.gms.permission.AD_ID { *; }
内容的提问来源于stack exchange,提问作者Amr Ahmed
相关产品推荐
相关产品推荐

