【问题标题】:What percentage of Android phones are little-endian?有多少百分比的 Android 手机是小端的?
【发布时间】:2017-12-25 13:06:35
【问题描述】:

编辑:这与 Android NDK 的字节序不同,因为该问题询问的是如何找到字节序,而不是有多少设备是大/小端。模组,请不要将此标记为骗子。


只是好奇,是否值得同时支持大端/小端 Android 手机?我的应用程序中有一些字节序敏感的代码,对于那些好奇的人来说,它涉及将long 序列化为字节流。我认为我的手机是大端的,因为ByteBuffer.getLong() 正在以大端方式从我写入的字节流中读取。

是否值得支持大/小端 Android 手机?我不确定大端与小端相比有多常见。是否有可用数据告诉我们每种的相对百分比?

谢谢。

【问题讨论】:

  • Android 设备(几乎)在本机级别完全是小端,尽管 Java 不是。如果你小心,这不是一个真正的问题。我说几乎是因为我手头没有具体的资源,但到目前为止,我在 6 年的 Android 开发中从未见过 Big Endian 生产设备
  • 我认为根据这个article,Big-Endian 已经死了,正如您在链接页面中看到的那样(机器是双端,但所有新的操作系统都是小端),其中意味着你不应该对大端感到好奇。
  • @worker_bee 该问题询问如何测试字节序,而不是有多少设备是大/小字节序。

标签: java android cpu-architecture endianness


【解决方案1】:

几乎所有受支持的架构都是 little-endian,但可能有一个例外。

Android 列出了其支持的 ABI(应用程序二进制接口)here。基本上分为三类:

  • 基于ARM;对于那些页面说每个“遵循 little-endian ARM GNU/Linux ABI”。
  • 基于 x86;还有那些are all little-endian
  • 基于 mips;该页面指定标准 mips 是 little-endian。除了链接到 its official page 之外,它没有说明 mips64 的任何内容

所以 mips64 是唯一的问号。它支持双端架构。似乎第一款 mips64 智能手机芯片于 2016 年问世。我找不到哪些(如果有的话)手机实际使用了它,但它似乎并不常见。

至于是否值得同时支持两者:这是您必须做出的判断。谁知道未来会发生什么?

【讨论】:

  • 2020 年更新:Android NDK 不再支持 mips/mips64,并且上面的 ABI 链接现在明确指出,“Android 始终是 little-endian。”
猜你喜欢
  • 2017-04-05
  • 2017-02-02
  • 2015-04-25
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
相关资源
最近更新 更多