Android x86是否模拟ARM?

时间:2013-08-09 12:30:07

标签: android x86 vmware qemu

试图弄清楚在针对ARM编译时,应用程序如何在VMWare中的Android x86上运行。 GUI是否在Qemu上运行?如果Android x86真的是x86,它们究竟是如何运行的?

4 个答案:

答案 0 :(得分:7)

intel发布了一个库('libhoudini'),它将arm指令转换为x86。然后他们在x86 CPU上执行。

答案 1 :(得分:2)

首先,Android应用程序(纯Java)实际上并不是“为ARM编译的,就像Java应用程序被编译成中间Java bytecodes一样,由任何支持JVM的平台执行,Android应用程序用Java被编译成Dalvik字节码,可以在支持Dalvik VM的任何平台上运行。在这方面,Android应用程序运行x86或ARM或MIPS的方式类似于Java应用程序在x86上运行的方式,SPARC,POWER等

当然,如果某个应用包含本机代码,那么该应用需要支持x86才能在x86模拟器或实际的x86手机/平板电脑上运行。

至于问题的第二部分,请记住Android的OS部分已编译到x86平台,因此我假设在x86计算机上运行x86 Android与运行完全相同,例如,Windows中的使用OSX时的VM。

答案 2 :(得分:1)

Android x86 fork“AndroVM”(官方站点不再存在,someone has mirrored the files here)在应用程序包含ARM本机代码时进行了ARM仿真。

据我所知,Android x86的官方版本不支持ARM仿真;使用本机ARM代码的应用程序会立即崩溃。

Genymotion(AndroVM续集)默认情况下不会模拟ARM。但是有一个unofficial hack可以添加ARM仿真。

答案 3 :(得分:1)

如果由于您的应用程序依赖于ARM二进制文件而以前无法使用Android仿真器,则现在可以使用Android 9 x86系统映像或任何Android 11系统映像来运行您的应用程序。更多详细信息,请参见Support for ARM binaries on Android 9 and 11 system images