The AD_ID permission and the Advertising ID declaration
Checked against Google's policy pages on .
- com.google.android.gms.permission.AD_ID
What does it allow?
The advertising ID is a resettable identifier apps use for advertising and analytics. Apps that target Android 13 or higher must declare com.google.android.gms.permission.AD_ID in their manifest to read it; without the declaration, the app reads a string of zeros instead. Users can also delete their advertising ID, after which apps get zeros too.
Which apps does Google Play allow to use it?
The permission is a normal one, granted at install, so the question Google Play asks is not whether you may use it but whether you say so. Play Console's App content page has an Advertising ID question, and your Data safety answers must match what the app does.
In the Data safety form, the advertising ID belongs to the "Device or other IDs" data type, which Google describes as identifiers that relate to an individual device, browser or app, and gives the advertising identifier as an example. If your app, or an SDK in it, sends the ID off the device, that counts as collection, and Google's Data safety rules say data an SDK collects is yours to declare.
Why is it in my app?
Google's own page gives the example: SDKs such as the Google Mobile Ads SDK (play-services-ads) declare AD_ID in their library manifest, and it is merged into your app by default, "even if you don't explicitly declare the permission".
To see every permission in your build and which ones may need a declaration, paste your merged manifest into the Play Console permission declaration checker.
What can I use instead?
If your app shows no ads and does not need the advertising ID for analytics, remove the permission with tools:node="remove" (or Expo's android.blockedPermissions), and answer the Advertising ID question to match.
How do I remove it?
Add it to your own manifest with tools:node="remove". The manifest merge then leaves it out, whichever library declared it. In Flutter and React Native the file is android/app/src/main/AndroidManifest.xml.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove" />
</manifest>In Expo, block it in your app config instead:
{
"expo": {
"android": {
"blockedPermissions": [
"com.google.android.gms.permission.AD_ID"
]
}
}
}Then test the feature the library provides: if it needed the permission, that feature may stop working.
How do I declare it if I keep it?
If you keep it, answer the Advertising ID question on the App content page, and make your Data safety form consistent with it. The two answers and the merged manifest should all say the same thing.
Common questions
- Play Console says my app uses the advertising ID, but I don't use it. Why?
- An SDK in your app declares AD_ID and it was merged into your manifest. Remove it with tools:node="remove" if you don't need it, or declare it if you do.
- What happens if I remove AD_ID but keep an ads SDK?
- On Android 13 and higher, the SDK reads the advertising ID as zeros. Check with your ads provider what that means for your ads before removing it.
Read next
SMS and Call Log permissions on Google Play
SMS and call log access. For default SMS, phone and assistant apps, plus narrow exceptions.
QUERY_ALL_PACKAGES and the Play Console declaration
See every installed app. Limited to device search, antivirus, file managers and browsers.
USE_EXACT_ALARM and SCHEDULE_EXACT_ALARM on Google Play
Exact alarms. USE_EXACT_ALARM is for alarm, timer and calendar apps; others ask the user.