android.os.Build的哪些属性是固定的?

时间:2012-11-07 10:06:46

标签: android build uniqueidentifier

我需要android.os.Build类的固定属性列表。我已经从here获得了列表,我把那些我认识的那些大胆修复了。通过修复我的意思是没有固件更新,重置工厂,...

的变化
  1. android.os.Build.VERSION.RELEASE //当前的开发 代号,或者字符串“REL”,如果这是一个发布版本。

  2. android.os.Build.BOARD //底层牌的名称,如“goldfish”。

  3. android.os.Build.BOOTLOADER //系统引导加载程序 版本号。

  4. android.os.Build.BRAND //软件定制的品牌(例如运营商),如果有的话。

  5. android.os.Build.CPU_ABI //本机代码的指令集名称(CPU类型+ ABI约定)。

  6. android.os.Build.CPU_ABI2 //本机代码的第二个指令集(CPU类型+ ABI约定)的名称。

  7. android.os.Build.DEVICE //工业品外观设计的名称。

  8. android.os.Build.DISPLAY //用于向用户显示的构建ID字符串

  9. android.os.Build.FINGERPRINT //唯一的字符串 识别这个版本。

  10. android.os.Build.HARDWARE //硬件名称(来自内核命令行或/ proc)。

  11. android.os.Build.HOST

  12. android.os.Build.ID //更改列表编号, 或者像“M4-rc20”这样的标签。

  13. android.os.Build.MANUFACTURER //产品/硬件的制造商。

  14. android.os.Build.MODEL //最终产品的最终用户可见名称。

  15. android.os.Build.PRODUCT //整体产品的名称。

  16. android.os.Build.TAGS //以逗号分隔的标签 描述构建,如“unsigned,debug”。

  17. android.os.Build.TYPE //构建类型,如 “user”或“eng”。

  18. android.os.Build.USER

  19. 请帮我填写清单

3 个答案:

答案 0 :(得分:13)

如果查看the source code to Build,您会看到所有这些值 - 包括粗体中的值 - 都来自系统属性文件。因此,ROM修改器或原始设备制造商可以根据需要修改这些值中的任何一个。

答案 1 :(得分:2)

我不会用Build的一致性来解决困境,因为马克已经说明了为什么没有保证答案。相反,我想回应你的目的和意图。

如果我理解正确,您正在尝试唯一标识单个设备。我首先指出this answer,您可以简单地断定通用解决方案是不可能的。重置出厂默认设置或切换SIM卡(如果设备有一个)将更改任何类型的唯一ID并欺骗您的应用程序,使其认为是不同的用户。

你需要重新思考你想要完​​成的事情。为什么需要唯一标识设备?如果您正在尝试识别用户,那么这种思维模式也无法应对多个设备。现在,Jellybean 4.2就是这种情况,设备可能支持多个用户。另请参阅this insightful blog post on the Android Developers Blog

您可以让用户附加他的Google帐户吗?或者说明你自己的服务?如果您可以识别用户,则可以通过UUID.randomUUID()识别单个设备。

答案 2 :(得分:1)

如果我理解正确(关于您的后续评论),您希望在不集成某种注册或登录机制的情况下识别设备。

我建议不要实现自己的ID计算算法,而是建议使用Android的OpenUDID实现(参见https://github.com/vieux/OpenUDID)。