2

I want to build a device_id with android_id, any one knows the answer to these three questions?

  • Where is the android_id value stored?
  • When is the android_id value initialized, i.e. the first time the value is set?
  • In which cases does the android_id value change?
2
5
  • Where is the android_id value stored?

On Android 5 and earlier this was stored in secure namespace of device Settings. So you can extract using:

~$ content query --uri content://settings/secure --projection value --where "name='android_id'"

Or:

~$ settings get secure android_id

Or directly read the secure table of settings.db database file. For device owner:

~# sqlite3 /data/user/0/com.android.providers.settings/databases/settings.db 'select * from secure where name="android_id"'

Since Android 6 settings are saved in xml files. For device owner:

~# grep android_id /data/system/users/0/settings_secure.xml

Since Android 8, android_id is "unique to each combination of app-signing key, user, and device" so as to deny "developers the ability to track users across multiple applications". These unique IDs are stored in /data/system/users/<User_ID>/settings_ssaid.xml.

  • When android_id value init, the first time set the value?
  • Which case does the android_id value change?

As evident, android_id "is randomly generated when the user first sets up the device and should remain constant for the lifetime of the user's device" unless a factory reset is performed which clears all settings.

On Android 8+ the app specific android_id "value may change if a factory reset is performed on the device or if an APK signing key changes".

Keeping all in view it doesn't seem a good idea to build a device_id with android_id.

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.