-
AndroidManifest.xmlの
application
に設定できるオプション。 -
Android 6.0 Marshmallowから
false
がサポートされた。 -
ネイティブライブラリがどのように端末にストアされるか、についてのオプションである。
-
通常apkのサイズ縮小に関するトピックとして扱われる。
公式のドキュメントから引用
https://developer.android.com/guide/topics/manifest/application-element.html
Whether or not the package installer extracts native libraries from the APK to the filesystem. If set to
false
, then your native libraries must be page aligned and stored uncompressed in the APK. No code changes are required as the linker loads the libraries directly from the APK at runtime.The default value is"true"
.
パッケージインストーラがネイティブライブラリをapkから取り出して端末のファイルシステムにコピーするかどうかを設定するオプションです。false
にした場合、ネイティブライブラリはバウンダリ整列(zipalign -p 4
)され非圧縮の状態でapkに格納されていなければなりません。リンカーは実行時にapkから直接ライブラリを読み込み、コードの変更は必要ありません。デフォルトの値はtrue
です。
補足すると、Android Studio 2.2以降では、ネイティブライブラリのバウンダリ整列と非圧縮をビルド時に自動的に実施してくれるようだった。
参考: #SmallerAPK, Part 8: Native libraries, open from APK
参考: Google Developers Japan: Android Studio 2.2 の APK パッケージングを理解する
ネイティブライブラリが非圧縮になることで、アップデート時の差分計算の最適化が効くようになるので、初回ダウンロードのサイズはほとんど変わらない(わずかに大きくなる)が、アップデートのサイズが小さくなる。
apkのサイズではなく端末で使用するトータルのファイルサイズも小さくなるが、Android Marshmallow以前の場合はオプションが有効にならずに毎回ネイティブライブラリをコピーするため、非圧縮の分だけサイズが大きくなる。