试图弄清楚在针对ARM编译时,应用程序如何在VMWare中的Android x86上运行。 GUI是否在Qemu上运行?如果Android x86真的是x86,它们究竟是如何运行的?
答案 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