Android:在 Intel 设备上运行仅 armeabi 应用程序

标签 android arm intel

我正在测试包含一些 native 库的应用程序。 到目前为止,这些库仅适用于 armeabi arch。 用于测试目的的设备是Asus Zenfone 4 . 它是基于 Intel 的设备,所以我预计运行该应用程序会出现问题,因为没有没有 x86 版本的库。

令人惊讶的是,应用程序运行良好。问题是为什么? 是因为某种 ARM 仿真吗? 这种仿真是否适用于所有英特尔 Android 设备?

/proc/cpuinfo 包含以下内容:

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 53
model name  : Intel(R) Atom(TM) CPU Z2520  @ 1.20GHz
stepping    : 1
microcode   : 0x110
cpu MHz     : 800.000
cache size  : 512 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fdiv_bug    : no
hlt_bug     : no
f00f_bug    : no
coma_bug    : no
fpu     : yes
fpu_exception   : yes
cpuid level : 10
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon pebs bts nonstop_tsc aperfmperf nonstop_tsc_s3 pni dtes64 monitor ds_cpl vmx est tm2 ssse3 xtpr pdcm movbe lahf_lm arat dtherm tpr_shadow vnmi flexpriority
bogomips    : 2396.16
clflush size    : 64
cache_alignment : 64
address sizes   : 32 bits physical, 32 bits virtual
power management:

最佳答案

Is it because of some kind of ARM emulation?

是的。它被称为 libhoudini。引用 myself :

libhoudini is a proprietary ARM translation layer for x86-powered Android devices. It allows an app that has NDK binaries for ARM, but not x86, to still run on x86 hardware, albeit not as quickly as it would with native x86 binaries.

请注意,libhoudini 仅适用于 NDK。纯基于 Java 的应用应该可以在任何受支持的 CPU 架构上正常运行。

Is this emulation the case for all Intel Android devices?

“全部”是一个强词。我将对冲并说“来自主要制造商的大多数采用英特尔技术的 Android 设备”。

关于Android:在 Intel 设备上运行仅 armeabi 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31047552/

相关文章:

linux - 我做错了什么,还是英特尔显卡太烂了?

android - GLSurfaceView 上的操作栏

Android Edit Text错误重叠其他组件

java - 在 FirebaseStorage 中的 Activity 销毁后调用 OnComplete

java - 如何在 Release build 的 android 中使用 Proguard 防止 LOG 打印

python - 由于 "TypeError: unhashable type: ' bytearray'"(在树莓派中)导致消息被截断

arm - 尝试 printf 数字 >= 10 时出现 STM32 硬故障

c - ARM 组装中的意外时间

c - 如何在 32 位中引发浮点错误

c - 为什么这个 IA32 汇编代码有 3 个真正的指令?