Android AD_ID 权限声明指南
问题概述
Google 在 2022 年实施了新的广告政策,要求 Android 应用在定位到 API 级别 31 (Android 12) 及以上时,必须明确声明 AD_ID
权限。此变更旨在增强用户隐私保护,特别是针对儿童应用的广告标识符使用限制。
许多开发者收到 Google Play 的邮件通知,要求处理此权限声明,但对于不使用广告的应用或使用特定 SDK 的开发者和言,存在诸多困惑。
核心要求解读
根据 Google 政策:
- 当应用定位到 Android 13 或更高版本时,必须声明
AD_ID
权限 - 未声明此权限的应用将获取到一串零值而非真实的广告 ID
- 如果应用的目标用户包含儿童,禁止传输 Android 广告标识符 (AAID)
解决方案分类
情况一:应用完全不包含广告
如果您的应用没有任何广告相关功能,推荐使用以下方法:
<!-- 在 manifest 标签中添加 tools 命名空间 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.yourcompany.yourapp">
<!-- 其他配置 -->
<!-- 在文件末尾添加 -->
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
</manifest>
重要提醒
使用 tools:node="remove"
会强制从最终清单文件中移除此权限,即使第三方库请求此权限也会被移除。
情况二:应用包含广告功能
如果您的应用确实使用了广告服务:
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
Google Play 控制台配置
无论您选择哪种技术方案,都必须在 Google Play 控制台中正确配置广告声明:
- 访问 Play Console
- 选择您的应用
- 转到 策略 > 应用内容
- 在 广告 部分如实声明您的应用是否包含广告
- 如果使用广告 ID 但不是用于广告(如分析用途),选择 是 并选择相应选项
必做步骤
未完成此配置将无法上传新版本应用到 Google Play 商店!
常见 SDK 处理方案
使用 AdMob 广告
如果您使用 Google Mobile Ads SDK (AdMob):
- 20.4.0 及以上版本:SDK 会自动声明权限,无需手动添加
- 20.4.0 以下版本:需要手动添加权限声明
使用 Firebase Analytics
如果应用使用 Firebase Analytics 但不显示广告:
- 在 Play Console 中声明使用广告 ID
- 选择 Analytics 作为使用原因
- 不要 使用
tools:node="remove"
,否则分析功能可能无法正常工作
检查合并后的清单文件
为确保正确处理,建议检查最终合并的清单文件:
- 路径:
app > build > intermediate > merged_manifest > release > AndroidManifest.xml
- 确认
AD_ID
权限是否正确包含或排除 - 根据检查结果在 Play Console 中做出相应声明
最佳实践建议
- 定期检查依赖更新:确保使用的广告和分析 SDK 都是最新版本
- 明确区分用途:广告 ID 用于广告还是分析?在 Play Console 中正确声明
- 测试验证:在发布前测试广告功能和分析功能是否正常工作
- 关注政策变化:Google 可能会调整相关政策,保持关注最新动态
总结
处理 AD_ID
权限需要同时关注代码配置和 Play Console 声明两个方面。根据应用的实际用途选择正确的配置方式,既能符合 Google 的政策要求,又能确保应用功能的正常运行。
简单记忆
- 有广告:添加权限 + Play Console 声明
- 无广告:移除权限 + Play Console 声明
- 仅分析:不移除权限 + Play Console 声明分析用途