2016-08-18 15 views
5

私のアプリケーションではHere SDKTwilio SDKが使用されています。両方ともネイティブライブラリを使用します(ここでは、/ libsおよび/ jniLibsフォルダからローカルにプラグインされたネイティブライブラリ、jCenterからプラグインされたTwilio SDK)。しかし、Android 5.1の場合、このライブラリは結果APKに存在しますが、ここでSDKは例外 "MISSING LIBRARIES:libMAPSJNI.so"をスローします。自分のプログラムがデバイスにインストールされているフォルダを開き、Twilio SDKの有無にかかわらず2つのケースでコンテンツを比較しました。違いは、接続されたTwilio APIフォルダ/ libがファイルであり、明白な理由のために、ローダはその内部を見ることができないため、ネイティブライブラリはここでSDKを初期化する必要があります。 Twilio gradle依存関係を削除すると、アセンブリは正常に実行されます。どのような理由とそれを修正する方法がありますか?必要であれば、私はこれらのlibsデバイスには存在しませんが、apkに存在するネイティブライブラリはありません

答えて

12

でテストプロジェクトを添付することができますが、このようなあなたのbuild.gradleを変更する必要があります

android { 
    (...) 
    splits { 
     abi { 
      enable true 
      reset() 
      include 'armeabi-v7a' 
      universalApk false 
     } 
    } 
    (...) 
} 

Twilio SDKは、x86をサポートし、HERE SDK現在、それをサポートしていないので、それはおそらくです。もしAPKs for each listed ABIを作成するためのGradleを伝えることができるsplitsブロックを定義することによって

+1

優れています。ありがとうございました。 – Lumen

+1

こんにちはアルテム、ここTwilioコミュニティに飛び込んでくれてありがとう。私たちは感謝を共有するためにあなたにシャツを送ることができますか?詳細については、[email protected]まで電子メールを送ってください。 –

+0

これは他のアーキテクチャにも当てはまりますが、ここでSDKはサポートしていません(arm64-v8aなど) – AndrewJC

0

include "armeabi", "armeabi-v7a", "x86", "mips" 

あるいは次のフィルタを追加することにより APKにすべての所望のABIを含むことができる。

android { 
(...) 
defaultConfig { 
    (...) 
    ndk { 
     // allow only 32bit *.so libs 
     abiFilters "armeabi", "armeabi-v7a", "x86", "mips" 
    } 
} 

}

どちらの方法でも、64ビット機能が混乱する可能性があります32ビットのHERE SDKがありますが、後者は1つのAPKでさらに多くのデバイスをサポートします。

いくつかのライブラリは、新しいAndroid Room Persistenceライブラリーのように、2つの64ビットABIフレーバーarm64-v8ax86_64のと一緒に32ビットの味を追加します。現在のところHERE SDKは32ビットのlibしか提供していないので、64ビットのlibバリアントを除外することは安全です。一方、64ビットデバイスは32ビットのlibsを正常に処理することが期待されています。

関連する問題