Flutter应用上架Google Play遇AD_ID权限报错求助
确认权限添加的正确性与位置
确保com.google.android.gms.permission.AD_ID权限是添加在android/app/src/main/AndroidManifest.xml的<manifest>根标签内,而非<application>标签下,格式需严格正确:<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>同时检查debug、release等变体的Manifest文件,避免权限被覆盖或遗漏。
查看合并后的最终Manifest
Flutter会自动合并所有依赖库的Manifest,可能出现权限被意外移除的情况。可以通过以下步骤验证:- 打开Android Studio,切换到Project视图
- 进入
app/build/intermediates/merged_manifests目录,找到对应发布变体(如release)的合并Manifest文件 - 打开文件确认
AD_ID权限存在
验证上传构件的权限完整性
确认你上传到Play Console的APK/App Bundle确实包含该权限。可以用aapt工具检查:aapt dump permissions your-app-bundle.aab或者在Android Studio中对生成的安装包进行分析,查看权限列表是否包含目标权限。
检查Play Console的活跃构件状态
确保所有发布轨道(生产、测试等)的活跃构件都已更新到包含权限的新版本。有时新版本审核通过后,旧构件可能仍在向部分用户分发,导致警告持续。可在「发布→应用版本」页面确认所有活跃构件均为最新版本。等待Play Console缓存更新
Play Console系统存在缓存延迟,即使构件已正确发布,警告可能不会立即消失。可等待2-4小时后再查看,或重新提交一次确认无误的构件。排查依赖库的权限冲突
部分第三方依赖库可能通过tools:node="remove"指令移除AD_ID权限。检查所有依赖的Manifest文件,或在主Manifest中添加强制保留规则:<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:replace="android:name"/>注意需在
<manifest>标签中添加xmlns:tools="http://schemas.android.com/tools"以启用tools命名空间。
内容的提问来源于stack exchange,提问作者Preem Palver2

