91
83

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Androidにおいてなぜzipalignをやる必要があるのか

Posted at

配布するapkファイルはzipalignコマンドで最適化する事が推奨されており、
最適化されていないapkファイルをgoogleのディベロッパーコンソールでアップしようとすると警告が出る。

zipalignとは何をしているのか。実施しないと何が悪いのかをまとめる。

何をしているのか

apk内のリソースファイルなどの未圧縮データを4バイトバウンダリに整列している。

実施しないと何が悪いのか

Androidでは、データが4バイトバウンダリに整列されている時に効率良くそのデータにアクセスする事が出来る。

逆に整列されていない場合、その整理されていないデータを正しく読むために遅くなり、また多くのメモリを消費するようになる。

apkファイル内のデータは複数のプロセスによってアクセスされる。
(インストーラがマニフェストを読んでアプリケーションに関連する許可をハンドリングする、ホームアプリケーションがリソースを読んでアプリケーションの名前やアイコンを取り出す、システムサーバがリソースを読んで通知などを行う、アプリケーション自身がapkファイルを読む)
zipalgn未実施のアプリがいくつかあると、その複数プロセスが多くのメモリを消費する結果として、メモリの圧迫が増加し、プロセスの強制終了&開始が頻繁に行われるようになる。
最悪の場合、デバイスのバッテリー寿命が短くなってしまう。

zipalignを実施して、プロセスがapkファイル内のデータに効率良くアクセス出来るようにしましょう。

おまけ

以下のコマンドでzipalignを実施する事が出来る。

zipalign -f -v 4 example.apk example_release.apk

以下のコマンドでzipalign実施済みかどうかの確認が出来る。

zipalign -c -v 4 example_release.apk

zipalignは署名の後で実施する。
zipalign実施後に署名をすると、署名の過程で整形が無効になってしまう。
同様の理由で、zipalign実施後にパッケージの変更を行ってはいけない。

91
83
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
91
83

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?