Table of Contents
Androidアプリのビルドファイルである aab のファイルサイズを小さくする方法についてです。
ビルドファイルの容量を小さく抑えることは、ダウンロード時間が増えたりユーザーの端末の容量を圧迫したりすることを防ぐために重要です。
また、現在の Google Play Developer Console では、150MBを超える容量の aab をアップロードすることができません。
ファイルサイズが上限を大幅にオーバーしてしまっている場合は AssetBundles を使うことになると思いますが、数十MBくらいの超過であればビルドに含まれるファイル(アセット)の設定を見直すことで対処できる可能性があります。
どのアセットが容量を喰っているか調べる
アプリ(特にゲーム)には、画像(テクスチャ)や3Dモデル(メッシュ)、音声ファイルなど様々なアセットが含まれます。
一般的に、ゲームにおいてその大部分を占めるものはテクスチャであるとされますが、対策を始める前に情報を集めることが大事です。
Unity の実行時ログファイル(Editor.log)には、ビルド時の詳細な記録が残ります。
その記録には、どの形式のどのファイルがどれだけの大きさを持つかという情報も含まれます。
実際に 150MB を超える aab をビルドして得られたログは以下のようになります。匿名性のため、パスのファイル形式以外を塗りつぶしています。
このようにログにはアセットの容量が大きい順でファイル名が列挙されるため、改善に役立つ情報を得ることができます。
これを見てみると、確かにテクスチャ(.png/.tga/.tif)が多く見られます。しかし、この例では、ある一つの3Dモデル(.fbx)が全体の12%もの容量を占めていることが確認できます。
容量削減の方法
今回は、あるモデルのメッシュが非常にハイポリ(頂点数が膨大)であったことが容量肥大化の原因でした。
該当するメッシュのモデルそのものを簡略化し、その他容量の大きなテクスチャのインポート設定を見直すことで無事に容量を削減することに成功しました。
容量削減後のログは以下のようになりました。
BGMより大きな容量のファイルが減少していることが確認できます。最も大きなアセットも全体の約3%程度まで抑えられています。
サードパーティ製のモデルなどをアセットストアからインポートしている場合、非常に高解像度なテクスチャやメッシュが使用されていることがあるので、見直すことで容量を削減することができるかもしれません。
テクスチャの容量は、元のファイルを編集せずとも Unity 側でインポート設定を変えることで抑えることができます。
Unity 内でテクスチャとして使用する画像ファイルを選択し、インスペクターにてサイズと圧縮形式を適切に設定します。
大体のテクスチャは 1024×1024 でも十分な画質ですので、プラットフォームによってはそれより大きなテクスチャは小さくしてしまって問題ないと思います。
以上、Androidアプリのビルド(.aab)の容量を削減する方法についてでした。