我正在测试包含一些本机库的应用。 到目前为止,这些库仅用于 armeabi arch。 用于测试目的的设备是Asus Zenfone 4。 它是基于英特尔的设备,因此我预计运行该应用程序时会遇到问题,因为该库的没有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:
答案 0 :(得分:6)
是因为某种ARM仿真吗?
是。它被称为libhoudini
。引用myself:
libhoudini
是针对x86驱动的Android设备的专有ARM转换层。它允许具有ARM的NDK二进制文件但不是x86的应用程序仍然可以在x86硬件上运行,尽管不像使用本机x86二进制文件那样快。
请注意,libhoudini
仅适用于NDK。基于Java的纯应用程序应该可以在任何受支持的CPU架构上正常运行。
这种仿真适用于所有英特尔Android设备吗?
“所有”是一个强有力的词。我将对冲并说“主要制造商的大多数英特尔驱动的Android设备”。