电脑CPU分32位和64位,这个我们都知道。用了这么长时间的android手机,突然有个疑问:android OS运行在多少位的CPU上呢?
android应用程序是基于Dalvik VM运行的,像JVM一样,DVM也是32位的,这个与底层物理机器无关。当然,带有native二进制文件的andriod应用程序,其native文件是与底层构架密不可分的。最常见的是ARM-32位构架,也还有运行在x86,MIPS构架上的设备。
总的来说,现在的android手机都是运行在32位CPU上的,ARM在2012年底的时候才发布第一个64位的版本,Cortex-A50,预计2014年在市场上发售。
可以通过以下实验验证
从手机中任意导出ARM的二进制文件,比如/system/bin中的一些个文件,/system/bin/dalvikvm,使用命令file dalvikvm查看文件类型,结果如下:
dalvikvm: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped
继续查看动态链接库文件/system/lib/libandroid_runtime.so,使用file命令,结果如下:
libandroid_runtime.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, stripped
文件类型都是32位elf格式
电脑CPU分32位和64位,这个我们都知道。用了这么长时间的android手机,突然有个疑问:android OS运行在多少位的CPU上呢?
android应用程序是基于Dalvik VM运行的,像JVM一样,DVM也是32位的,这个与底层物理机器无关。当然,带有native二进制文件的andriod应用程序,其native文件是与底层构架密不可分的。最常见的是ARM-32位构架,也还有运行在x86,MIPS构架上的设备。
总的来说,现在的android手机都是运行在32位CPU上的,ARM在2012年底的时候才发布第一个64位的版本,Cortex-A50,预计2014年在市场上发售。
可以通过以下实验验证
从手机中任意导出ARM的二进制文件,比如/system/bin中的一些个文件,/system/bin/dalvikvm,使用命令file dalvikvm查看文件类型,结果如下:
dalvikvm: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped
继续查看动态链接库文件/system/lib/libandroid_runtime.so,使用file命令,结果如下:
libandroid_runtime.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, stripped
文件类型都是32位elf格式