使用Firebase Messaging的无广告应用如何消除日志中的ad_id警告?
解决Firebase Messaging应用的AD_ID权限警告问题
核心原因
这个警告通常是项目间接引入了依赖AD_ID权限的第三方库(比如Firebase Analytics、Google Ads相关组件)导致的——即使你没主动集成广告功能,这些依赖也会在Manifest合并阶段添加AD_ID权限请求,触发日志警告。
具体解决步骤
1. 定位引入AD_ID权限的依赖
先找出是哪个库在偷偷添加权限:
- 在Android Studio中打开
Gradle工具窗口,找到你的app模块,执行Tasks > android > dependencies查看完整依赖树; - 或在终端运行命令:
搜索./gradlew app:dependenciescom.google.android.gms.permission.AD_ID,定位到对应的依赖库(常见为firebase-analytics或play-services-ads系列组件)。
2. 排除不必要的依赖
根据定位结果,在app的build.gradle中排除相关依赖:
如果是Firebase Analytics导致的:
implementation 'com.google.firebase:firebase-messaging:你的版本号' { exclude group: 'com.google.firebase', module: 'firebase-analytics' exclude group: 'com.google.firebase', module: 'firebase-analytics-ktx' // Kotlin项目需加这行 }Firebase Messaging的核心推送功能不需要依赖Analytics,排除后不会影响正常使用。
如果是Google Ads相关组件导致的:
configurations.all { exclude group: 'com.google.android.gms', module: 'play-services-ads' exclude group: 'com.google.android.gms', module: 'play-services-ads-identifier' }
3. 加强Manifest配置
确保Manifest的配置完全禁用ADID收集:
- 先确认Manifest根标签包含tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> - 添加权限移除和禁用配置:
<!-- 强制移除AD_ID权限 --> <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove" /> <application ...> <!-- 禁用Firebase Analytics的ADID收集 --> <meta-data android:name="google_analytics_adid_collection_enabled" android:value="false" /> <!-- 声明非广告应用,避免Ads SDK触发权限检查 --> <meta-data android:name="com.google.android.gms.ads.AD_MANAGER_APP" android:value="false" /> </application>
4. 清理缓存并重建项目
执行以下命令清理Gradle缓存,再重新构建项目:
./gradlew clean ./gradlew assembleDebug
验证效果
重新运行应用,查看Logcat,确认Package X failed Ad Id permission check的警告不再出现。
内容的提问来源于stack exchange,提问作者Mathias
相关产品推荐
相关产品推荐

