Android O, the latest version of Android which is available only in the form of Developer Previews, brings a ton of changes. The Developer Previews are meant to give app and game developers a chance to play with the new platform and adapt their software offerings to the changes in order to take advantage of the improvements.

In a blog post, Google has detailed a few improvements that Android O brings to provide users control over the use of identifiers.

In O, Android ID (Settings.Secure.ANDROID_ID or SSAID) has a different value for each app and each user on the device. The ANDROID_ID value will also not change on package uninstall/reinstall as long as the package name and the signing keys remain the same. It will only change if the device is factory reset or if signing keys are changed. Earlier versions of Android which get updated to Android O will retain the same Android ID unless the app is uninstalled and reinstalled.

Developers requiring a device-scoped identifier are advised to use a resettable identifier, such as Advertising ID, instead, which gives users more control as it provides a user-facing setting to limit ad tracking.

Android O also introduces a new API, Build.getSerial() which replaces the now-deprecated android.os.Build.SERIAL in order to be consistent with runtime permissions required for access to IMEI. In addition to Build.SERIAL, other system properties are also made unavailable in Android O, such as:

  • ro.runtime.firstboot: Millisecond-precise timestamp of first boot after last wipe or most recent boot
  • htc.camera.sensor.front_SN: Camera serial number (available on some HTC devices)
  • persist.service.bdroid.bdaddr: Bluetooth MAC address property
  • Settings.Secure.bluetooth_address: Device Bluetooth MAC address. In O, this is only available to apps holding the LOCAL_MAC_ADDRESS permission.

Android O also incorporates a robust MAC address randomization system for randomizing Wi-Fi scan traffic. These changes were made for the chipset firmware on the Google Pixel and Nexus 5X, and Android O integrates these firmware changes into the Android Wi-Fi stack so that other devices using the same chipset and running Android O can also take advantage of these changes. Some of the changes are briefly mentioned below:

  • For each Wi-Fi scan while it is disconnected from an access point, the phone uses a new random MAC address (whether or not the device is in standby).
  • The initial packet sequence number for each scan is also randomized.
  • Unnecessary Probe Request Information Elements have been removed: Information Elements are limited to the SSID and DS parameter sets.

These new changes are meant to limit the use of device-scoped non-resettable identifiers. The changes also provide more user-facing control and change the way applications can request account information. You can read all of the changes in the blog post.

Source: Android Developers Blog