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

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

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

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

如果我的ARM-库复制到/lib/armeabi/并与gradle这个标志 splits {

abi {

enable true

reset()

include 'x86', 'armeabi'

universalApk true

}

}

安装通用的编译-apk以Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]失败。

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

如果我将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?

在此先感谢!

编辑:

一切工作正常,问题是库调用现在失败一个新的错误:

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

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

2016-11-11

phlo

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值