Android的os.arch输出ARM,MIPS,X86?(Android os.arch out

2019-07-19 20:29发布

为了识别Android设备的平台,似乎Java系统属性“os.arch”就足够了:

Log.i("mytag", "os.arch: " + System.getProperty("os.arch"));

大多数ARM器件响应: os.arch: armv7l

在x86模拟器回应: os.arch: i686

这有什么真正的 Intel和MIPS的设备的输出?

86 Android装置:??????

MIPS Android装置:??????

任何其他平台和变种?

编辑谷歌电视:

它看起来像谷歌电视采用“无”的生成代码。

Vizio公司合作的明星:os.arch:armv7l,Build.CPU_ABI / Build.CPU_ABI2:无/未知

罗技歌剧团:os.arch:i686的,Build.CPU_ABI / Build.CPU_ABI2:无/未知

编辑澄清意图:

这里的目标是要分工处理与他们的实际输出设备的列表的编辑。 从AOSP代码预期输出是有趣的,但设备制造商,像老谷歌电视上面的单位,可从提供从AOSP代码预期输出偏离。

Answer 1:

据我可以在Android源代码树中找到ro.product.cpu.abi属性(可以作为访问CPU_ABI通过构建类 )应具备以下架构到值的映射:

32位总线:

ARM:“armeabi-V7A”(也可能是“armeabi”如果是真的老了/低端设备)

86:“86”

MIPS: “MIPS”


64位总线:

ARM: “arm64-V8A”

86: “x86_64的”

MIPS: “MIPS64”



Answer 2:

这些值来自Linux的结构。 他们可以从一个shell显示cat /proc/cpuinfo 。 所述臂限定在它们的arch/arm/mm目录。 在这个目录中,

grep cpu_arch_name * | grep string | cut -d \, -f2 | sort | uniq
  • ARMV4
  • ARMV4T
  • 用于ARMv5
  • 结构ARMv5TE
  • 用于ARMv5TEJ
  • 的ARMv6
  • 的ARMv7

arm7l表示“小端”模式,但这是可选择的,并且依赖于内核。 我想大多数ARM内核将是“小尾”,除非它是一个以网络为中心的产品(如一个Android路由器)。 这是一样的uname -m 。 在x86,则返回上一个PowerPC“的i686”,则返回“竞价排名”。 我没有MIPS的系统,但我的猜测是“MIPS”,但它可能中的分类找到CPU-probe.c

有超过20架构在Linux中都具有不同的CPU版本。 答案是远远低于当前的Android端口。 然而,这是可能的,任何人可以在未来使用。 我认为ARM是唯一一个发送子architechure。

参见: uname()手册页 , 维基百科的uname , 服务器故障的uname机 , OpenJDK的邮件列表



Answer 3:

这可能是帮助

  1. Build.CPU_ABI的本机代码的指令集(CPU型+ ABI约定)的名称。
  2. Build.CPU_ABI2的本机代码的第二指令集(CPU型+ ABI约定)的名称。

更多信息Android的build类



文章来源: Android os.arch output for ARM, MIPS, x86?