使用houdini(Android模拟器)在基于x86的AVD上运行ARM库

时间:2016-11-11 14:02:46

标签: android android-emulator x86 arm genymotion

我有一个针对ARM的编译库。我无权访问源代码。我想在我自己的应用程序中使用此库。应用程序应该在基于x86的AVD上运行(出于性能原因)。

问题是,我无法弄清楚如何使用houdini在x86环境中运行此ARM库。我下载了houdini-libs并将它们复制到/system/lib/arm/ resp。到/lib/armeabi/并尝试运行我的apk。

我尝试了三种不同的方法,但都失败了:

  1. 如果我将ARM库复制到splits { abi { enable true reset() include 'x86', 'armeabi' universalApk true } } 并使用gradle-flag编译它

    Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

    使用/lib/armeabi/安装universal-apk失败。

  2. 如果我将ARM库复制到universalApk false并使用... couldn't find "libXYZ.so"进行编译,则生成的x86-apk中不存在lib。库调用失败了/lib/x86/(这很明显,因为它不存在)。

  3. 如果我将ARM库复制到java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.jni.example/lib/x86/libXYZ.so" has unexpected e_machine: 40,则库调用将失败并显示D/dalvikvm: Trying to load lib /data/app-lib/com.jni.example-1/libXYZ.so 0xa4df6228 D/dalvikvm: VFY: replacing opcode 0x62 at 0x0002 I/dalvikvm: DexOpt: unable to optimize static field ref 0x3d6d at 0x10 in Lio/netty/util/internal/logging/Log4JLogger;.debug D/houdini: [1481] Loading library(version: 3.2.1.43093 RELEASE)... successfully. D/houdini: [1481] Open Native Library /data/app-lib/com.jni.example-1/libXYZ.so failed. E/dalvikvm: dlopen("/data/app-lib/com.jni.example-1/libXYZ.so") failed: dlopen failed: "/data/app-lib/com.jni.example-1/libXYZ.so" has unexpected e_machine: 40 W/System.err: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app-lib/com.jni.example-1/libXYZ.so" has unexpected e_machine: 40 。机器代码40是ARM(这是正确的,库确实是ARM),但我不明白为什么这不是由houdini翻译的。

  4. 有没有办法在x86仿真器上运行ARM库?如何设置houdini?

    提前致谢!

    编辑:

    我尝试使用Genymotion的个人版本并从此主题中删除了houdini库:http://forum.xda-developers.com/showthread.php?t=2528952

    一切正常,问题是库调用现在失败并出现新错误:

    {{1}}

    有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

对于Genymotion,您可以从这里https://mega.nz/#!p4lFlCZR!TFsb8dMqNdAJjKoCDPDDvNtcQdEB0-KkVlTgQVwG20s下载可刷新的houdini-library,所有带ARM architure库的App都可以顺利运行。

归功于23pin谁修复&在线发布:http://23pin.logdown.com/posts/691046-genymotion-use-arm-translation-on-6x-image