2016-11-11 42 views
1

私はARM用にコンパイルされたライブラリを持っています。私はソースコードにアクセスできない。私は自分のアプリでこのライブラリを使いたい。このアプリは、x86ベースのAVDで実行する必要があります(パフォーマンス上の理由から)。houdini(Androidエミュレータ)を搭載したx86ベースのAVDでARMライブラリを実行

問題は、houdiniを使用してx86環境でこのARMライブラリを実行する方法がわかりません。私はhoudini-libsをダウンロードし、/system/lib/ respにコピーしました。 /system/lib/arm/に送信し、私のAPKを実行しようとしました。

私は3つの異なるアプローチを試してみましたが、すべて失敗しました:

  1. 私は普遍のインストールを/lib/armeabi/にARMライブラリをコピーして、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]で失敗します。

  2. /lib/armeabi/にARMライブラリをコピーし、universalApk falseでコンパイルすると、結果のx86-apkにlibが存在しません。ライブラリ呼び出しは、... couldn't find "libXYZ.so"で失敗します(存在しないため、明らかです)。

  3. /lib/x86/にARMライブラリをコピーすると、ライブラリ呼び出しが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の個人的なバージョンを使用しようとしたと、このスレッドからフーディーニ・ライブラリ点滅

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 

誰でもこれを修正する方法を知っていますか?

答えて

2

Genotionでは、フラッシュ可能なhoudiniライブラリをここからhttps://mega.nz/#!p4lFlCZR!TFsb8dMqNdAJjKoCDPDDvNtcQdEB0-KkVlTgQVwG20sからダウンロードし、すべてのApp Arch ARMライブラリライブラリをスムーズにダウンロードできます。オンライン投稿&を固定23pinへ

クレジット:http://23pin.logdown.com/posts/691046-genymotion-use-arm-translation-on-6x-image

+0

私は、ライブラリのネイティブのx86バージョンに私の手を得ることができました。しかし、おそらく他の誰かがあなたのフーディーニへのリンクから利益を得ることができます。ありがとう! – phlo

関連する問題