Unityでビルドしたapkのサイズ

この記事を検証したときのUnityのバージョンは5.1.2f1 Personalです。

プロジェクトには何もいれずもっとも小さいアプリを作ってみます。
デフォルトではヒエラルキーにはライトとカメラがあります。

これだけがシーンに存在するアプリをビルドしたときにapkのサイズはどうなるでしょうか?
作ったファイルのプロパティを見てみると以下のようになっていました。約18MBです。何も入れていないのにも関わらず結構大きな容量をとっています。

上記のアプリではPlayer SettingsでDevice Filterという項目をFATにしていました。つまり、x86の端末向けのファイルまで含まれています。大抵の端末には関係ないので、ARM v7という設定にした方がアプリの容量が減ります。

ARM v7向けの設定にすると以下のように約10MB程になりました。


完成したapkの拡張子をzipにして展開してみます。 FAT(ARM v7 + x86)とARM v7のみの2つのapkに対して試してみます。

まずFATの方は何がファイルサイズの大きなところを占めているかというと、以下の通りです。
名前からわかるようにUnityのライブラリとMonoのライブラリが大きな容量を占めています。lib/x86とlib/armeabi-v7aにこれらのファイルが含まれているので、FATの方はx86用のライブラリの分大きくなっていると言えます。

ARM v7に設定した場合は次の通りです。
x86用のライブラリがなくなるので、libunity.soとlibmono.soはひとつずつです。

これらのファイル容量を足すとapkのサイズを超えますが、apkは圧縮されたファイルなのでそうなります。

アプリの容量のほとんどがUnityのライブラリによって占められているという結果になりました。 x86端末のために出すアプリだったら別ですが、基本的にPlayer SettingsのDevice FilterをARM v7に設定しておく方が良いようです。
Unityの機能が減るということはないので、ライブラリの容量は将来さらに増えるでしょう。使っていない機能は除外してビルドするといった機能が実装されると良いのですが、このあたりはスマホの進化によっても必要かどうかはわからないところです。通信速度が速くなり、ストア上のアプリの容量制限もなくなってくればあまり気にする必要がないからです。