Skip to content

Instantly share code, notes, and snippets.

@yatatsu
Created July 24, 2017 03:06
Show Gist options
  • Save yatatsu/b9d76cafc7f84d3364f989304ccb5288 to your computer and use it in GitHub Desktop.
Save yatatsu/b9d76cafc7f84d3364f989304ccb5288 to your computer and use it in GitHub Desktop.
android:extractNativeLibsについて

android:extractNativeLibs について

  • 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以前の場合はオプションが有効にならずに毎回ネイティブライブラリをコピーするため、非圧縮の分だけサイズが大きくなる。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment