Flutter应用Google Play Console AD_ID权限警告无法消除求助
问题:Google Play Console 持续提示AD_ID权限缺失
我当前使用google_mobile_ads: ^5.1.0,但Google Play Console一直显示如下警告:
Your advertising ID declaration in Play Console says that your app uses advertising ID. A manifest file in one of your active artifacts doesn't include the com.google.android.gms.permission.AD_ID permission.
我需要使用广告功能,已经在android/app/src/main/AndroidManifest.xml中添加了权限:
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
我甚至尝试添加tools:node="remove"排查重复权限问题,并且确认生成的.aab包中的AndroidManifest.xml确实包含该权限,但警告依然存在。我怀疑问题出在某个依赖项使用了AD_ID但未申请权限,请问该如何检查这类情况?又该如何强制让受影响的清单添加AD_ID权限?
我的依赖列表如下:
dependencies: flutter: sdk: flutter uuid: ^4.4.0 english_words: ^4.0.0 provider: ^6.0.0 validators: ^3.0.0 fl_chart: ^0.68.0 card_swiper: ^3.0.1 intl: ^0.19.0 build_runner: ^2.4.11 hive: ^2.2.3 hive_flutter: ^1.1.0 hive_generator: ^2.0.1 path_provider: ^2.1.3 prompt_dialog: ^1.0.16 animated_snack_bar: ^0.4.0 confirm_dialog: ^1.0.3 flutter_isolate: ^2.0.4 modal_bottom_sheet: ^3.0.0 fluttericon: ^2.0.0 flutter_native_splash: ^2.4.0 flutter_launcher_icons: ^0.13.1 alert_dialog: ^1.0.2 bulleted_list: ^0.0.1+0.1a in_app_purchase: ^3.2.0 flutter_staggered_grid_view: ^0.7.0 image_picker: ^1.1.2 cross_file: ^0.3.4+1 dio: ^5.5.0+1 cryptography: ^2.7.0 cryptography_flutter: ^2.3.2 url_launcher: ^6.3.0 video_player: ^2.9.1 file_picker: ^8.0.0+1 screenshot: ^3.0.0 share_plus: ^10.0.2 flutter_sharing_intent: ^1.1.1 google_mobile_ads: ^5.1.0 app_tracking_transparency: ^2.0.6
一、排查依赖项的AD_ID权限问题
- 查看合并后的清单:在项目根目录执行
flutter build apk --debug,然后打开build/app/intermediates/merged_manifest/debug/AndroidManifest.xml,搜索com.google.android.gms.permission.AD_ID,看看有没有依赖项用tools:node="remove"把权限删掉了。 - 检查单个依赖的清单文件:去本地pub缓存目录(比如
~/.pub-cache/hosted/pub.dev/)找到各个依赖的android文件夹,打开src/main/AndroidManifest.xml,逐个查看是否存在用到AD_ID但未声明权限,或者主动移除权限的情况。 - 用Gradle日志分析合并过程:进入项目的
android目录,执行./gradlew app:mergeDebugAndroidManifest --info,在日志里查找AD_ID权限相关的合并记录,能明确看到哪个依赖对该权限做了修改。
二、强制确保AD_ID权限被保留
如果确定是某个依赖移除了权限,直接在你的主AndroidManifest.xml里做以下操作:
- 先给manifest标签加上
tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="你的应用包名">
- 然后用
tools:node="merge"强制保留权限:
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="merge" />
这个配置会覆盖所有依赖项对该权限的移除操作,确保合并后的清单里一定包含这个权限。
另外也有可能是Play Console的缓存延迟,提交新构建后等几个小时再查看,说不定警告就自动消失了。
内容的提问来源于stack exchange,提问作者Jake N
相关产品推荐
相关产品推荐

