原因
按照android官方说明,android_id会随着恢复出厂设置或重新烧录系统,或切换用户登陆都会重新随机生成新的anroid_id
因此对于一些依赖anroid_id做唯一识别标识之一的软件来说就有问题了。
修改成唯一的方法
我这里使用serialno作为android_id, 因为从我这边开发板追溯代码看到,serialno是从核心板的某块stm32里取的值,目前看是唯一的。
具体修改步骤:
1)进到android9.0系统源码里,frameworks/base/packages/SettingsProvider/src/com/android/providers/settings
2)修改SettingsProvider.java, 找到方法:private void ensureSecureSettingAndroidIdSetLocked(SettingsState secureSettings)
大概在2730行左右(懒的直接跳到这里就可),然后直接把 String androidId 修改为如下:
String androidId = SystemProperties.get("ro.serialno", Long.toHexString(new SecureRandom().nextLong()));
就是通过获取Properties内的ro.serialno来替换原来的随机生成的值,记得:
import android.os.SystemProperties;