zipalign
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
zipalign
は zip アーカイブ アライメント ツールです。アーカイブ内のすべての非圧縮ファイルを、ファイルの先頭を基準として揃えるようにします。これらのファイルに mmap(2)
から直接アクセスできるようになるため、このデータを RAM にコピーする必要がなくなり、アプリのメモリ使用量を減らせます。
APK ファイルをエンドユーザーに配布する前に zipalign
を使用して最適化します。Android Studio(Android Gradle プラグイン(AGP)を使用している)を使ってビルドした場合は、自動的に最適化されます。この場合、引き続き zipalign
を使用して APK のアライメントが調整されていることを確認できますが、アライメントを調整する必要はありません。このドキュメントは、カスタム ビルドシステムの管理者を主に対象としています。
注意: ビルドプロセスの特定の時点で zipalign
を使用する必要があります。この点は、使用するアプリ署名ツールによって異なります。
-
apksigner
を使用する場合は、APK ファイルを署名する前に zipalign
を使用する必要があります。apksigner
を使用して APK に署名した後で APK を変更すると、その署名は無効になります。
-
jarsigner
を使用する場合は(推奨されません)、APK ファイルの署名後に zipalign
を使用する必要があります。
アライメントは、zipalign
が zip ローカル ファイル ヘッダー セクションの "extra"
フィールドのサイズを変更することで行われます。このプロセスでは、"extra"
フィールドの既存のデータを変更することもできます。
使用方法
APK に共有ライブラリ(.so
ファイル)が含まれている場合は、-P 16
を使用します。
mmap(2)
に適した 16 KiB ページ境界に沿って配置されるようにします。
16 KiB と 4 KiB の両方のデバイスで保存されています。それ以外のファイルについては、
zipalign
に対する必須のアライメント引数。4 バイトにアライメントする必要があります。
32 ビットと 64 ビットの両方のシステムに対応しています。
infile.apk
のアライメントを調整して outfile.apk
として保存するには:
zipalign -P 16 -f -v 4 infile.apk outfile.apk
existing.apk
の配置を確認するには、次のコマンドを使用します。
zipalign -c -P 16 -v 4 existing.apk
オプション
次の表に、使用可能な zipalign
オプションを示します。
オプション |
説明 |
-c |
配置のみを確認します(ファイルは変更しません)。 |
-f |
既存の出力ファイルを上書きします。 |
-h |
ツールのヘルプを表示します。 |
-P <ページサイズ_kb> |
非圧縮 .so ファイルを、指定された KiB 単位でページサイズに揃えます。有効なオプション
<pagesize_kb> は 4、16、64 です。 |
-p |
4 KiB は、非圧縮の .so ファイルをページ調整します。Google Cloud コンソールから
-p が非推奨になったため、代わりに -P 16 を使用します。 |
-v |
詳細な出力を行います。 |
-z |
Zopfli を使用して再圧縮します。 |
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2024-08-23 UTC。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"必要な情報がない"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"複雑すぎる / 手順が多すぎる"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"最新ではない"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻訳に関する問題"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"サンプル / コードに問題がある"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"その他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"わかりやすい"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"問題の解決に役立った"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"その他"
}]
{"lastModified": "\u6700\u7d42\u66f4\u65b0\u65e5 2024-08-23 UTC\u3002"}
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2024-08-23 UTC。"]]