Skip to content

Android AD_ID 权限声明指南

问题概述

Google 在 2022 年实施了新的广告政策,要求 Android 应用在定位到 API 级别 31 (Android 12) 及以上时,必须明确声明 AD_ID 权限。此变更旨在增强用户隐私保护,特别是针对儿童应用的广告标识符使用限制。

许多开发者收到 Google Play 的邮件通知,要求处理此权限声明,但对于不使用广告的应用或使用特定 SDK 的开发者和言,存在诸多困惑。

核心要求解读

根据 Google 政策:

  • 当应用定位到 Android 13 或更高版本时,必须声明 AD_ID 权限
  • 未声明此权限的应用将获取到一串零值而非真实的广告 ID
  • 如果应用的目标用户包含儿童,禁止传输 Android 广告标识符 (AAID)

解决方案分类

情况一:应用完全不包含广告

如果您的应用没有任何广告相关功能,推荐使用以下方法:

xml
<!-- 在 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" 会强制从最终清单文件中移除此权限,即使第三方库请求此权限也会被移除。

情况二:应用包含广告功能

如果您的应用确实使用了广告服务:

xml
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

Google Play 控制台配置

无论您选择哪种技术方案,都必须在 Google Play 控制台中正确配置广告声明:

  1. 访问 Play Console
  2. 选择您的应用
  3. 转到 策略 > 应用内容
  4. 广告 部分如实声明您的应用是否包含广告
  5. 如果使用广告 ID 但不是用于广告(如分析用途),选择 并选择相应选项

必做步骤

未完成此配置将无法上传新版本应用到 Google Play 商店!

常见 SDK 处理方案

使用 AdMob 广告

如果您使用 Google Mobile Ads SDK (AdMob):

  • 20.4.0 及以上版本:SDK 会自动声明权限,无需手动添加
  • 20.4.0 以下版本:需要手动添加权限声明

使用 Firebase Analytics

如果应用使用 Firebase Analytics 但不显示广告:

  1. 在 Play Console 中声明使用广告 ID
  2. 选择 Analytics 作为使用原因
  3. 不要 使用 tools:node="remove",否则分析功能可能无法正常工作

检查合并后的清单文件

为确保正确处理,建议检查最终合并的清单文件:

  1. 路径:app > build > intermediate > merged_manifest > release > AndroidManifest.xml
  2. 确认 AD_ID 权限是否正确包含或排除
  3. 根据检查结果在 Play Console 中做出相应声明

最佳实践建议

  1. 定期检查依赖更新:确保使用的广告和分析 SDK 都是最新版本
  2. 明确区分用途:广告 ID 用于广告还是分析?在 Play Console 中正确声明
  3. 测试验证:在发布前测试广告功能和分析功能是否正常工作
  4. 关注政策变化:Google 可能会调整相关政策,保持关注最新动态

总结

处理 AD_ID 权限需要同时关注代码配置和 Play Console 声明两个方面。根据应用的实际用途选择正确的配置方式,既能符合 Google 的政策要求,又能确保应用功能的正常运行。

简单记忆

  • 有广告:添加权限 + Play Console 声明
  • 无广告:移除权限 + Play Console 声明
  • 仅分析:不移除权限 + Play Console 声明分析用途