【问题标题】:Run ARM-library on x86-based AVD with houdini (Android Emulator)使用 houdini(Android 模拟器)在基于 x86 的 AVD 上运行 ARM 库
【发布时间】:2016-11-11 14:02:46
【问题描述】:

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

问题是,我不知道如何使用 houdini 在 x86 环境中运行这个 ARM 库。我下载了 houdini-libs 并将它们复制到 /system/lib/ resp。到/system/lib/arm/ 并尝试运行我的apk。

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

  1. 如果我将 ARM 库复制到 /lib/armeabi/ 并使用 gradle-flag 编译它

    splits {
        abi {
            enable true
            reset()
            include 'x86', 'armeabi'
            universalApk true
        }
    }
    

    universal-apk 安装失败并显示Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

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

  3. 如果我将 ARM 库复制到 /lib/x86/,库调用将失败并显示 java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.jni.example/lib/x86/libXYZ.so" has unexpected e_machine: 40。机器码 40 是 ARM(没错,库确实是 ARM),但我不明白为什么 houdini 不翻译。

有没有办法在 x86 模拟器上运行 ARM 库?如何设置houdini?

提前致谢!


编辑:

我尝试使用个人版 Genymotion 并从该线程中闪现了 houdini-library:http://forum.xda-developers.com/showthread.php?t=2528952

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

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

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

【问题讨论】:

    标签: android android-emulator x86 arm genymotion


    【解决方案1】:

    对于 Genymotion,您可以从这里https://mega.nz/#!p4lFlCZR!TFsb8dMqNdAJjKoCDPDDvNtcQdEB0-KkVlTgQVwG20s 下载可刷写的 houdini 库,所有带有 ARM 架构库的应用程序都可以顺利运行。

    感谢 23pin 在线修复和发布:http://23pin.logdown.com/posts/691046-genymotion-use-arm-translation-on-6x-image

    【讨论】:

    • 我设法获得了本机 x86 版本的库。但也许其他人可以从您与 houdini 的链接中获利。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多