Android x86是否模拟ARM?(Does Android x86 emulate ARM?)
试图找出应用程序在为ARM编译时如何在VMWare上的Android x86上工作。 GUI是否在Qemu上运行? 如果Android x86真的是x86,它们究竟运行得如何?
Trying to figure out how apps work on Android x86 in VMWare when they were compiled for ARM. Is the GUI running on Qemu? How exactly do they run if Android x86 is really x86?
原文:https://stackoverflow.com/questions/18146718
更新时间:2019-12-28 00:42
最满意答案
首先,Android应用程序(纯Java)实际上并不是“为ARM编译的,就像Java应用程序被编译成中间Java字节码以便由任何支持JVM的平台执行一样,用Java编写的Android应用程序编译成Dalvik字节码可以在任何支持Dalvik VM的平台上运行,在这方面,运行x86或ARM或MIPS的Android应用程序与Java应用程序在x86,SPARC,POWER等上的运行方式类似。
当然,如果一个应用程序包含本机代码,那么该应用程序需要包含对x86的支持,以便在x86模拟器或实际的x86手机/平板电脑上运行。
至于你的问题的第二部分,请记住,Android的操作系统部分已经编译到x86平台,所以我假设在x86计算机上运行x86 Android与运行完全相同,例如,在VM中的Windows使用OSX。
First thing first, Android apps (pure Java) are not actually being "compiled for ARM, just like Java apps are compiled into a intermediate Java bytecodes to to executed by any platforms that supports JVM, Android apps written in Java are compiled into Dalvik bytecodes to be run on any platform that supports Dalvik VM. In this regard, how Android apps run x86 or ARM or MIPS is similar to how Java apps run on x86, SPARC, POWER, etc.
Of course if an app contains native code, then the app would need to include support for x86 to be run on an x86 emulator or an actual x86 phone/tablet.
As for the second part of your question, remember that the OS part of Android has been compiled to the x86 platform, so I would assume running x86 Android on a x86 computer is exactly same as running, for example, a Windows in a VM when using OSX.
2013-08-09
相关问答
ARM是基于一类硬件系统的包括开发平台和应用程序,android X86{写成X86 android更准确}应该是在Intel硬件基础上模拟和运行android应用程序的平台。在应用程序级上两者是兼容的,在基于基础开发时是不兼容的,需要做代码转换。
尝试在abiFilter中使用abiFilter属性。 这篇文章解释了如何在不同的体系结构中使用本机库: 在章节为每个架构构建一个APK,并且做得很好! 它说: 通过使用abiFilter属性,使用abiFilter非常轻松地为每个体系结构构建一个APK。 尝试将此添加到您的gradle.build : android{
...
productFlavors {
x86 {
ndk {
abiFilter "x86"
...
大概。 我对SSE不熟悉,但你可以强迫许多SSE模式表现得像NEON。 这取决于您的编译器和可用库,但请参阅一些Visual Studio FP单元控制功能 。 这可能足以满足您的要求。 此外,您可以使用arm_neon.h标头来确保使用类似的内在函数来完成类似的操作。 最后,如果您真的需要在这些边界条件下实现这种精度,那么您将需要一个好的测试套件来验证您是否按预期实现了结果。 最后,即使使用纯粹的“C”代码(通常符合IEEE-754),并且像其他评论者提到的那样在ARM上使用VFP,您将获得不同
...
如果您的共享库libA.so已经为linux-x86编译,它肯定不会在android x86目标上运行(主要是因为它需要链接到Bionic C库而不是glibc),而且绝对不能在android arm设备上运行。 然后,为了解决你的第二个问题,如果你能为你的android目标获得正确编译的android共享库,你将以这种方式包含你的库: LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := A
LOCAL_SR
...
首先,Android应用程序(纯Java)实际上并不是“为ARM编译的,就像Java应用程序被编译成中间Java字节码以便由任何支持JVM的平台执行一样,用Java编写的Android应用程序编译成Dalvik字节码可以在任何支持Dalvik VM的平台上运行,在这方面,运行x86或ARM或MIPS的Android应用程序与Java应用程序在x86,SPARC,POWER等上的运行方式类似。 当然,如果一个应用程序包含本机代码,那么该应用程序需要包含对x86的支持,以便在x86模拟器或实际的x86
...
我遇到了同样的问题,并找到了解决方法。 如果您以前为其他体系结构构建过,请务必删除“compat / strtod.o”和“compat / strtod.d”。 出于某些原因,如果您在3.1.1中更改体系结构,则不会重新构建这些体系结构,但它在以前的版本中运行良好。 你应该在建造之前做一个“干净的”。 I ran into the same issue and found a workaround. Make sure to remove "compat/strtod.o" and "compa
...
从SDK Manager安装(看起来是什么)Intel HAXM是不够的。 只需下载安装程序,您必须首次手动运行它。 阅读本文以获得有关该主题的更大视图(您可以搜索“HAXM”以获取有关安装的说明,具体取决于您的操作系统)。 Installing (what looks to be) the Intel HAXM from the SDK Manager is not enough. That just downloads the installer, you have to run it man
...
无法将X86仿真器与Xamarin一起使用 您是否在计算机中禁用了Hyper-V ? 如果您没有关闭此Windows功能,当您使用X86 Android模拟器时,您将收到错误消息“它失败”。 您应该关闭Hyper-V : 以管理员身份运行Cmd 执行以下commond: bcdedit /set hypervisorlaunchtype off
重新启动计算机 如果您想要更好的性能,则应使用硬件加速 。 The problem was because I didn't have HAXM ins
...
如果你输入 ./configure --help
您将获得一些关于配置Android版本的选项的其他信息: Android options:
-android-sdk path .............. The Android SDK root path.
(default $ANDROID_SDK_ROOT)
-android-ndk path .............. The Android
...
基于英特尔的设备可以运行所有Android应用程序,甚至是最初为ARM体系结构编写的应用程序。 但是,如果应用程序包含特定于ARM的代码,则必须先将其翻译,然后才能执行。 这需要时间和精力,因此电池寿命和整体性能可能会受到影响。 这是否是一个严重的问题值得商榷:我们的评论表明,英特尔确实倾向于在电池寿命方面落后于ARM,但差距并不大,整体性能通常非常好。 无论如何,英特尔正在努力鼓励开发人员生成他们的应用程序的英特尔本机版本,因此希望翻译将逐渐成为一个问题。 资料来源: http : //www.
...