You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中device_info_plus安卓设备ID异常问题求助

问题原因及解决方案

核心原因

你遇到的问题本质是对device_info_plus库中AndroidDeviceInfo.id字段的含义理解偏差,加上安卓系统的权限限制导致:

  • ID格式变更:id字段在库的8.0.0版本中,对应的是安卓系统的Build.ID——也就是系统版本的构建标识,格式本身就是RKQ1.21XXXXXX.XXX这类字符串,而非你之前获取的硬件相关ID。
  • 多设备ID重复:不同设备如果安装了同一版本的安卓系统,它们的Build.ID完全一致,自然会出现不同设备ID相同的情况。
  • 前后差异的根源:你之前能拿到240a75fXXXXXXXXX格式的ID,大概率是因为当时应用的targetSdkVersion低于29(Android 10),且申请了READ_PHONE_STATE权限,旧版本库在低系统版本下通过该权限获取了硬件类ID并映射到id字段;但当targetSdkVersion升级到29+,或设备系统更新到Android 10+,安卓系统限制了普通应用获取IMEI、硬件序列号等敏感ID的权限,库就会返回Build.ID作为id的取值。

正确的设备唯一标识获取方案

如果需要稳定的安卓设备唯一标识,推荐使用AndroidDeviceInfo.androidId字段:

  • 它是安卓系统首次启动时生成的16进制64位字符串,设备恢复出厂设置前不会改变,应用卸载重装也不受影响。
  • 无需申请任何敏感权限,所有安卓版本都兼容。

修改后的代码示例:

await _deviceInfo.androidInfo.then((value) {
  device_imeino = value.androidId;
});

注意:IMEI属于隐私敏感信息,Android 10及以上普通应用已无法获取,不建议再依赖它作为设备标识。

内容的提问来源于stack exchange,提问作者Honey Last

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 09:31:05