You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成AppsFlyer SDK后Google Play Console报AD_ID权限错误求助

问题原因及解决办法

核心原因

  1. 依赖传递注入权限:Firebase Crashlytics关联的play-services-ads-identifier模块会自动向Manifest中注入AD_ID权限,即便手动添加tools:node="remove",若依赖合并优先级或配置细节出错,仍会导致权限残留。
  2. Manifest合并规则失效:tools:node="remove"的生效需要正确配置tools命名空间,且需确保该声明的合并优先级高于其他引入AD_ID权限的依赖,否则会被覆盖。
  3. AppsFlyer SDK配置遗漏:6.12.2版本的AppsFlyer SDK默认可能仍尝试收集广告ID,即便Manifest移除权限,若初始化时未禁用该逻辑,可能触发Google Play的权限检测机制。

分步解决办法

1. 修正Manifest配置

确保Manifest满足以下要求:

  • 根标签manifest中包含tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="your.package.name">
  • 正确添加权限移除声明:
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove" />

2. 阻断依赖传递的权限

  • 打开app/build/reports/manifest-merger/debug-report.txt(或release版本报告),搜索com.google.android.gms.permission.AD_ID,定位引入该权限的依赖。
  • 若来源为Firebase相关依赖,在build.gradle中排除对应模块:
// 以Firebase Crashlytics为例
implementation('com.google.firebase:firebase-crashlytics:xx.x.x') {
    exclude group: 'com.google.android.gms', module: 'play-services-ads-identifier'
}

3. 禁用AppsFlyer广告ID收集

在Application类的初始化代码中,明确关闭广告ID收集逻辑:

AppsFlyerProperties.getInstance().setBoolean(AppsFlyerProperties.DISABLE_AD_ID_COLLECTION, true);
AppsFlyerLib.getInstance().init(AF_DEV_KEY, null, this);

4. 验证权限移除结果

生成签名后的APK/AAB,用aapt工具检查Manifest:

aapt dump badging your-app.aab | grep "com.google.android.gms.permission.AD_ID"

若无输出,说明权限已成功移除;若仍有输出,重新检查依赖排除和Manifest配置。

5. 同步Google Play Console内容声明

在Google Play Console的应用内容→数据安全板块,明确选择「不收集广告ID」,确保内容声明与实际权限状态一致。

内容的提问来源于stack exchange,提问作者Wicaledon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:46:12