APKのサイズを34KBから21KBまで減らすために行ったこと🐱

EasterEgg Neko Atsume LauncherのAPKサイズを極限まで小さくすることに取り組んだ成果を適当に書いておく。

EasterEgg Neko Atsume Launcherがそもそもなんだ??って話だろうけど、以下とか読めばOK。

hack-it-iron.hatenablog.com

play.google.com

どのようにAPKのサイズを小さくしたか

コードはGithub上に公開してある。読むほどの価値はない...🐱

具体的にAPKサイズのチューニングを行ったPull Requestは以下の2つ。

github.com

github.com

不要なリソースファイルを削除する

EasterEgg Neko Atsume Launcherはアプリの性質上、ほとんどリソースを必要としない。

R.javaさえ消し去りたいくらいだ。

styles.xmlはいらないね。テーマの定義なんてAndroidManifest.xmlに直接書けばいい。さらば、styles.xml

次はstrings.xml、いらないね。アプリ名なんてAndroidManifest.xmlに直接書けばいい。さらば、strings.xml

これでres配下はアプリアイコンが配置してあるmipmapだけになった。

不要なリソースの削除はココらへんが限界。(mipmap-mdpiとか消してよくね?とかもあるけど、そこは消さずに残す縛り

アプリアイコンを最適化(optimize)する

不要なリソースファイルを消したところで削れるのは所詮 数十 〜 百 byteほどだ。

ということでアプリ唯一のリソースであるアプリアイコンを最適化してみよう。

使うツールは画像最適化ツールの「ImageOptim」

ImageOptim — better Save for Web

使い方が簡単なのでとても嬉しい。ファイルをDropするだけで最適化してくれて、どれくらい最適化できてのかも表示してくれる。

んで、ImageOptimにアプリアイコンをDropして最適化してみる。

アプリアイコンが 30%くらい最適化された。素晴らしい!

ImageOptimでもうひと押し最適化する

ImageOptimのメニューバーの「ツール」を開いてみると最適化の方式が選べることに気づいた。

「品質: 100%」というのがデフォルトの設定みたい。最適化しても品質は落ちさないというのは当たり前か。

f:id:operando:20160921185135p:plain

んじゃ、その下にある非可逆圧縮の動作に変えて再度アプリアイコンを最適化してみた。

f:id:operando:20160921185142p:plain

画像のサイズは小さくなるが、画像の品質が落ちるので適材適所ではあるが、ここは心を鬼にしてAPKのサイズを小さくすることに優先するぞ!

ぐぬぬ...🐱よ... ちょっと品質落ちるけどごめんなー!!という気持ち...

その結果、Release APKのサイズが21KBになった!!

最適化前のVersion 1のRelease APKのサイズが 34KBだったので、 34 - 21 = 13KBの削減だ。

最高だ🐱!!

21KBになったVersion 2のAPKをリリース

最高のアップデートだ🐱

f:id:operando:20160921190103p:plain

まとめ

アプリの性質によってはリリースを限界まで削減できる。

コードをいじったり、削除したりで限界がきたら画像をImageOptim等で最適化してみるといい。

🐱最高!!