Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

zipalign

zipalign は、Android アプリ(APK)ファイルに重要な最適化を行うアーカイブ アライメント ツールです。このツールにより、すべての非圧縮データが、ファイルの先頭を基準とする特定のアライメントで始まるようになります。具体的には、画像や未加工ファイルなど、APK 内のすべての非圧縮データを 4 バイト境界に揃えます。これにより、アライメント制限のあるバイナリデータが含まれる場合でも、すべての部分に対して mmap() で直接アクセスできるようになります。メリットとして、アプリの実行時に消費される RAM の量が減ります。

APK ファイルをエンドユーザーに配布する前に、必ずこのツールを使用してアライメントを調整するようにしてください。この処理は Android ビルドツールで行うことができます。Android Studio は、APK のアライメントを自動的に調整します。

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

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

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

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

使用方法

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

zipalign [-f] [-v] <alignment> infile.apk outfile.apk

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

zipalign -c -v <alignment> existing.apk

<alignment> は、バイト アライメント境界を定義する整数です。この値は常に 4(32 ビット アライメント)にする必要があります。それ以外は、実際に何の効果もありません。

フラグ:

  • -f: 既存の outfile.zip を上書きします。
  • -v: 詳細データを出力します。
  • -p: infile.zip 内のすべての共有オブジェクト ファイルに対して、同一のページ アライメントを outfile.zip で使用します。
  • -c: 指定したファイルのアライメントを確定します。