zipalign
は zip アーカイブ アライメント ツールです。アーカイブ内のすべての非圧縮ファイルを、ファイルの先頭を基準として揃えるようにします。これらのファイルに mmap(2)
から直接アクセスできるようになるため、このデータを RAM にコピーする必要がなくなり、アプリのメモリ使用量を減らせます。
APK ファイルをエンドユーザーに配布する前に zipalign
を使用して最適化します。Android Studio(Android Gradle プラグイン(AGP)を使用している)を使ってビルドした場合は、自動的に最適化されます。この場合、引き続き zipalign
を使用して APK のアライメントが調整されていることを確認できますが、アライメントを調整する必要はありません。このドキュメントは、カスタム ビルドシステムの管理者を主に対象としています。
注意: ビルドプロセスの特定の時点で zipalign
を使用する必要があります。この点は、使用するアプリ署名ツールによって異なります。
アライメントは、zipalign
が zip ローカル ファイル ヘッダー セクションの "extra"
フィールドのサイズを変更することで行われます。このプロセスでは、"extra"
フィールドの既存のデータを変更することもできます。
使用方法
APK に共有ライブラリ(.so
ファイル)が含まれている場合、-p
を使用して、mmap(2)
に適した 4 KiB のページ境界にライブラリがアライメントされるようにします。それ以外のファイル(zipalign
に対する必須のアライメント引数によってアライメントが決定される)の場合、Android Studio は 32 ビットシステムと 64 ビットシステムの両方で 4 バイトにアライメントします。
infile.apk
のアライメントを調整して outfile.apk
として保存するには:
zipalign -p -f -v 4 infile.apk outfile.apk
existing.apk
のアライメントの調整を確認するには、次のコマンドを使用します。Android Studio または AGP を使用してビルドする場合は、このコマンドを使用して、APK のアライメントが調整されていることを確認します。
zipalign -c -v 4 existing.apk
オプション
次の表に、使用可能な zipalign
オプションを示します。
オプション | 説明 |
---|---|
-c | 配置のみを確認します(ファイルは変更しません)。 |
-f | 既存の出力ファイルを上書きします。 |
-h | ツールのヘルプを表示します。 |
-p | 非圧縮の .so ファイルをページ揃えします。 |
-v | 詳細な出力を行います。 |
-z | Zopfli を使用して再圧縮します。 |