APKファイルの削減(アセット単位)

Unityのビルドを行いAPKファイルを作ります。できたファイルのサイズが大きかった場合どうすればよいでしょうか?

50MBを超えないようにするだけでなく、より小さいファイルになっている方がダウンロードが早く終わり好ましいです。APKに含まれるアセット(テクスチャ、サウンド、スクリプトなど)を小さくするということがAPKファイルを小さくすることにつながります。

効果的なのは大きなアセットを削減することです。例えば1MBのテクスチャと1KBのサウンドがAPKに含まれている場合、前者を減らす方が効果があります。容量が1000倍違うので当たり前なんですが、PC上で見れるファイルサイズがAPK内でのファイルサイズと異なるためどのファイル(アセット)を削減すべきなのか調べるのはそれほど簡単ではありません。

もちろん元々大きなファイルはAPK上でも大きいはずですが、どれくらいの割合を占めているかを知ることはできません。あくまでも元のファイルサイズは目安です。APK上でアセットがどの程度のファイルサイズなのかを知る方法は以下の通りです。(公式に発表されている方法ではなく、私が調べてみて実際に推測通りだと思われる方法になります。)

test.apkというようにAPKファイルができているとします。
拡張子をzipに変えて、解凍します。解凍したら以下のようなフォルダ構成になっているかと思います。(Unityのバージョンによっては多少変わるかも知れません。)

assets以外のフォルダは削減することができないので、assets以下にあるリソースのうち容量の大きいものを探します。assets/bin/DataにRESOURCEファイルというものがあります。これはプロジェクトのResourcesフォルダ以下にあるアセットのバイナリだと思われます。

この中の大きなものを削減すると効率的です。ファイル名がGUIDと一致するため、プロジェクトフォルダ内をgrepすることで元のファイル名を調べることができます。
シーンに置いているゲームオブジェクト等はシーンの方にまとめられてしまうようで個別にサイズの大小を測ることができません。

上の画像で言うと、3番目の1f2c3a…とかいうファイル名がGUIDです。

かなり手間がかかる方法なのですが、極端に大きなファイルがResourcesにあり、それがアプリを圧迫している場合には有効です。それ以外の場合だとResourcesを使っているときが有効だと思います。