web-dev-qa-db-ja.com

アライメントされていないapkが必要な理由

Androidのgradleは、2つのバイナリでapkを生成します:非整列と整列。

ドキュメント 言いました...

秘密鍵でAPKに署名したら、ファイルに対してzipalignを実行します。このツールは、すべての非圧縮データが、ファイルの先頭に対して特定のバイトアラインメントで始まることを保証します。 4バイト境界でのアライメントを確保すると、デバイスにインストールしたときにパフォーマンスが最適化されます。整列すると、Androidシステムは、パッケージからすべてのデータをコピーするのではなく、整列制限のあるバイナリデータが含まれている場合でも、mmap()でファイルを読み取ることができます。利点は、実行中のアプリケーションが消費するRAMの量を減らすことです。

配置するには、apkを整列させることを強くお勧めします。私の場合、alignedapkを結果の製品として使用し、unalignedAPK.

調整されていないapkは開発中に特別な用途がありますか?

151
Youngjae

これは2段階のプロセスです。位置合わせされていないapkは単なる中間製品です。

  1. 位置合わせされていないapkが生成されます
  2. 非整列は整列され、整列apkを生成します
197
flx

アライメントされたapkに署名するとアライメントが元に戻されるため、unaligned(signed)APKが必要です。

docs から:

注意:zipalignは必ず実行する必要がありますafter.apkファイルは秘密鍵で署名しました。署名する前にzipalignを実行すると、署名手順により位置合わせが取り消されます。

詳しくは this answer をご覧ください。 ここ は詳細なビルドプロセスです。 enter image description here

49
SMR