zipalign

zipalign は、zip アーカイブのアライメント ツールです。このツールを使用すると、アーカイブに含まれるすべての未圧縮ファイルが、ファイルの先頭を基準にアライメントされます。これらのファイルに mmap(2) から直接アクセスできるようになるため、このデータを RAM にコピーする必要がなくなり、アプリのメモリ使用量を減らせます。

APK ファイルをエンドユーザーに配布する前に、必ず zipalign を使用してファイルを最適化するようにしてください。Android Studio を使用してビルドすると、この処理が自動的に行われます。このドキュメントは、カスタム ビルドシステムの管理者を対象としています。

注意: 使用するアプリ署名ツールに応じて、アプリビルド プロセス内の 2 つのポイントのいずれかで zipalign を使用する必要があります。

  • apksigner を使用する場合、APK ファイルが署名されるに必ず zipalign を実行する必要があります。apksigner を使用して APK に署名した後で APK を変更すると、その署名は無効になります。
  • jarsigner を使用する場合、APK ファイルが署名されたに必ず zipalign を実行する必要があります。

アライメントは、zip ローカル ファイル ヘッダー セクションの「extra」フィールドのサイズを変更することで行われます。このプロセスによって、「extra」フィールド内の既存のデータが変更される場合があります。

アプリのビルド時に zipalign を使用する方法について詳しくは、アプリへの署名をご覧ください。

使用方法

APK に共有ライブラリ(.so ファイル)が含まれている場合、-p を使用して、mmap(2) に適した 4 KiB のページ境界にライブラリがアライメントされるようにしてください。それ以外のファイル(zipalign に対する必須のアライメント引数によってアライメントが決定される)の場合、Studio は 32 ビットシステムと 64 ビットシステムの両方で 4 バイトにアライメントします。

infile.apk のアライメントを調整して outfile.apk として保存するには:

zipalign -p -f -v 4 infile.apk outfile.apk

existing.apk のアライメントを確定するには:

zipalign -c -v 4 existing.apk

zipalign -h を使用すると、サポートされているフラグの一覧を確認できます。