サードパーティのネイティブ ライブラリをフィルタリングし、それらすべてに対して「armeabi」のみを許可する必要があります。1つの例外を除いて!- 特定のライブラリをその「armeabi-v7a」バリアントに含める必要があります。
ライブラリに応じて、サードパーティのネイティブ ライブラリを異なる方法でフィルタリングするにはどうすればよいですか? (またはアプリモジュール上)
最終的に APK に必要なものは次のとおりです。
- アルメアビ / lib-1.so
- アルメアビ / lib-2.so
- アルメアビ / lib-3.so
- armeabi-v7a / special-lib.so
全文:
いくつかのモジュールで構築されたアプリがあります。いくつかのサードパーティのネイティブ ライブラリを使用します。これまで、すべてのライブラリで「armeabi」バージョンのみを使用していました。これは、互換性が最も高く、アプリのサイズを小さくする (複数の APK を使用しない) ことを目指しているためです。ただし、「armeabi-v7a」形式でのみ利用可能な新しいサードパーティ ライブラリを含める必要があります。
フィルターを使用しています:
productFlavors {
app {
ndk {
abiFilters "armeabi"
}}}
メインアプリモジュールにあります。すべてのモジュールとライブラリからすべてのネイティブ ライブラリをフィルタリングします。ここで、このフィルターを使用する必要があります。
productFlavors {
app {
ndk {
abiFilters "armeabi", "armeabi-v7a"
}}}
これにより、アプリは機能しますが、サイズも大幅に増加します。使いたくありません。これにより、新しいライブラリの armeabi-v7a バージョンが許可されますが、含めたくない他のいくつかのライブラリの armeabi-v7a バージョンも許可されます。
質問:アプリ モジュールの 1 つに存在する 1 つの特定のライブラリに対してのみ「armeabi-v7a」を許可したいと考えています。ABI フィルターまたはその他の方法でそれを達成できますか?
64 ビットに関する注意: 64 ビットのネイティブ ライブラリがある場合は、それらすべてを用意する必要があることはわかっています (アプリが 64 ビット ライブラリを 1 つ見つけると、64 ビット モードで起動し、 32 ビット ライブラリを使用できます)。ただし、armeabi と armeabi-v7a の場合、そのような問題はなく、各ライブラリの両方のバージョンを提供する必要はありません。