我的APK中有两个.so库:
1)LibraryA:仅针对ARM体系结构构建,因为我不想将所有代码移植到x86。这是一项艰巨的任务。
2)LibraryB:为ARM和x86构建。 ARM libhoudini仿真器对于Intel设备而言速度太慢,无法以合适的速度运行此库,因此它必须具有可正常运行的x86端口。
APK中的lib文件夹如下所示:
../ LIB / armeabi / LibraryA的
../ LIB / armeabi / LibraryB
../ lib / x86 / LibraryB(注意:x86没有LibraryA)
当我在Intel设备上安装/运行APK时,它默认使用.so库的ARM体系结构,并忽略了LibraryB的x86版本。结果是,它被模拟并且对于生产而言太慢。但是在ARM设备上一切都很好用,没问题。
如何强制Android在英特尔设备上正常运行,以便模拟ARMA的ARM版本并运行x86版本的LibaryB?
为了完整起见,我使用android-ndk-r10d进行构建。
答案 0 :(得分:0)
我可以通过将ARMA的ARM编译版本放在" ../ lib / x86"中来欺骗Android加载x86版本的LibraryB。夹。即使LibraryA是为ARM编译的,它仍然会加载,然后Android也会加载x86版本的LibraryB。
../ LIB / armeabi / LibraryA的
../ LIB / armeabi / LibraryB
../ lib / x86 / LibraryA(为ARM编译,但仍然有效)
../lib/x86/LibraryB(为x86编译)
答案 1 :(得分:0)
不支持混合arm / x86应用程序。您的解决方法中的行为无法保证,您看到的这两种行为实际上可能因设备和操作系统版本而异。
这里唯一的解决方案是将库A移植到x86。