30

私の Android アプリにはネイティブ ライブラリが含まれており、armeabi-v7a および x86 用のネイティブ ライブラリをビルドしています。ただし、ネイティブ ライブラリも含むサード パーティ ライブラリをアプリに統合する必要があります (サード パーティ ライブラリは、build.gradle から Maven を介して含めたCrashlyticsです)。問題は、サードパーティ ライブラリの AAR がすべてのアーキテクチャ (armeabi、arm64-v8a、armeabi-v7a、mips、mips64、x86、および x86_64) を提供し、私のアプリは armeabi-v7a と x86 のみをサポートすることです (arm64-v8a は近い将来に計画されています)。したがって、最終的な apk がビルドされると、サードパーティ ライブラリのすべての ABI と、ネイティブ コードの x86 および armeabi-v7a ABI のみが含まれます。これにより、Galaxy S6 などの arm64 デバイスでアプリを起動するとアプリがクラッシュします。

私の質問は、サード パーティの AAR から選択した ABI のみを含めることは可能ですか?

APK の分割については認識していますが、これで問題が部分的にしか解決しないことに注意してください。つまり、Play ストア経由でアプリを配布した場合にのみ機能します。Play ストアはベータ テスト配布をサポートしていますが、更新された APK の伝播はかなり遅いため、アプリの PlayStore ベータ チャネルに更新をプッシュする前に、はるかに高速な Crashlytics のベータ配布システムを介して更新をプッシュします。問題は、Crashlytics の配布システムが APK の分割をサポートしていないことです (または、私が間違っているのでしょうか?)。したがって、実際には、選択した ABI のみを含む「ユニバーサル」APK をビルドする必要があります。それを達成する方法は?

Crashlytics 固有の回答 (たとえば、ベータ チャネルを介して APK 分割を配布する方法など) にも満足できますが、選択した ABI のみを含む「ユニバーサル」APK を構築するためのソリューションにはるかに満足します。当社では、サポートされているアーキテクチャのみを含む AAR アーカイブとして SDK をクライアントに提供しており、異なる ABI がサポートされている他の SDK と当社の SDK を統合する場合の処理​​方法をクライアントに指示したいと考えています。

最新の安定した Android スタジオ (1.2.1.1)、gradle 2.4、および android gradle プラグイン バージョン 1.2.3 を使用しています。

4

4 に答える 4