Migration Difficulty: Easy | Estimated Time: 15 minutes | Breaking Changes: None
What’s New in v1.12.0
Automatic AAID collection
The SDK captures the AAID as an
aaid alias when enabled in your workspace config — no AaidAliasProvider neededAutomatic IP collection
The SDK captures the user’s IP as an
ip_address alias from an internal endpoint — no app changes requiredGood news: This release is fully backward compatible with no breaking changes or deprecations. Automatic collection is off by default and is enabled remotely through your dashboard.
How Automatic ID Collection Works
Collection is driven by your workspace configuration, not by app code. Once you enable it for your workspace in the dashboard, the SDK picks it up on its next config refresh.AAID collection
AAID collection
- Stored as an alias with tag
aaid, the priority defined in your config, and no expiry. - Re-fetched on each new session to detect Limit Ad Tracking changes, AAID resets, and priority changes from the server config.
- If the user has Limit Ad Tracking enabled, no alias is stored and any existing
aaidalias is cleared. - If an alias with the same tag, value, and priority already exists (from a previous auto-collection or a manual
AaidAliasProvider), storage is skipped to avoid duplicates.
IP address collection
IP address collection
- Stored as an alias with tag
ip_address, the priority defined in your config, and no expiry. - Retrieved from Permutive’s internal endpoint and updated when the IP changes.
- No app or manifest changes are required for IP collection.
Standard Upgrade
Upgrading the SDK requires only a dependency bump. Update yourbuild.gradle.kts or build.gradle to the v1.12.x core:
- Before (v1.11.x)
- After (v1.12.0)
google-ads, appnexus) are unaffected by this release. Automatic collection stays off until you enable it for your workspace in the dashboard, so no further changes are needed to complete the upgrade.
Opting Into AAID Collection
Declare the AD_ID permission
To collect the AAID, the client app must declare the Google Play Services must also be available on the device. If Play Services is missing or unavailable, the fetch fails silently and no alias is stored.
AD_ID permission in its AndroidManifest.xml:This permission is required on Android 13 (API 33) and above. Without it, the AAID is returned as all zeros (
00000000-0000-0000-0000-000000000000), and the SDK treats this the same as no AAID — nothing is stored.Update your Play Console Data Safety form
Because the AAID is now collected and sent off-device, declare it in Play Console → App content → Data safety:
- Data type collected:
Device or other IDs→Advertising ID(underPersonal info) - Collection: Yes, collected; sent off-device
- Optional vs. required: Optional — the user can deny via Limit Ad Tracking or by resetting the AAID, and the SDK respects both
- Purposes: whichever apply to your use of Permutive (typically Analytics, Advertising or marketing, Personalization)
Verifying Collection
Enable developer logging and look for the identity being set:Manual vs. Automatic AAID Collection
If you already addAaidAliasProvider manually, we recommend removing the manual provider once automatic collection is enabled, unless you have a specific use case for it. Automatic, config-driven collection covers the same capture, lets you enable or disable it without shipping an app update, and is managed centrally from the dashboard.
Running both is safe in the meantime — automatic collection deduplicates against any existing
aaid alias with the same value and priority, so you won’t get duplicate identities during the transition.Manual (AaidAliasProvider) | Automatic (config-driven) | |
|---|---|---|
| Enablement | App code at initialization | Workspace config (remote) |
| App update needed to toggle | Yes | No |
AD_ID permission required | Yes (Android 13+) | Yes (Android 13+) |
| Google Play Services required | Yes | Yes |
| Alias tag | aaid | aaid |
Rollback
If you need to roll back to v1.11.x:AD_ID permission in your manifest — it is harmless when collection is disabled.
Requirements
v1.12.0 maintains the same minimum requirements as v1.11.x:| Requirement | Version |
|---|---|
| Android API | 21+ (Android 5.0) |
| Compile SDK | 34+ |
| Kotlin | 1.6+ (if using Kotlin) |
| Java | 8+ (JVM target 1.8) |
Getting Help
AAID Provider
Manual AAID capture and privacy considerations
Identity Management
How aliases and identities work
Verification
Verify identity capture
Issues
Solutions to common issues