Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

配布する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実施後にパッケージの変更を行ってはいけない。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away