背景と顛末
Unity2017.4で開発してたんですが、アプリのAPKサイズが100MB近くになってしまい、アプリのサイズを減らすためAssetBundleの導入を決意。
(※APKサイズが100MBを超えるとGooglePlayStoreにアップロードできない制約があります)
今どきはUnity2018.2でAddressable Asset Systemが公式機能で提供されているので、思い切ってバージョンアップして触ってみた。そして挫折した。
導入はできた
Unity2018へのバージョンアップと、Addressable Asset Systemの動作確認まではできた。
動作確認ではAddressables.LoadAssetが非同期なことで苦労したが、LoadingSceneを設けてLoadしてから本Sceneを読む方法を教えてもらい、試したら解決できた。
この時点ではその上手く行った方法を記事したいと思っていた。
ビルドエラー発生したけど解決
Editorでの動作確認がとれたので、今度はAPKファイルでビルドしてみることに。
Unable to merge
の見慣れたエラーが出たが、これは.aar
内も含めてProject内のAndroidManifestのminSdkVersionとtargetSdkVersionを揃えれば解決する知識があったので、手動で直す。そしてビルドが通った!
ファイルサイズが膨れている・・・だと
ビルドは通ったが、できあがったAPKファイルのサイズは 139.5M だった。
なんとバージョンアップする前の99MBから増えている。
自分のアプリのサイズが大きい原因はTextureが多いことが主因とわかっていたので、「アップデートでTextureの設定でも変わってしまったのかな?」と思い、Textureの設定をガチャガチャいじってみる。
そして、試しに再ビルド。
アプリサイズを見る。
────────195.6MB。
ふ、増えている・・・
堪らずEditorlogを開いてみる。
139.5Mと195.6MBの結果は以下の通りだった。
//139.5M
-----------------------------------
Build Report
Uncompressed usage by category:
Textures 103.3 mb 38.8%
Meshes 0.0 kb 0.0%
Animations 15.5 kb 0.0%
Sounds 2.9 mb 1.1%
Shaders 182.9 kb 0.1%
Other Assets 3.0 mb 1.1%
Levels 7.9 mb 3.0%
Scripts 3.4 mb 1.3%
Included DLLs 11.3 mb 4.2%
File headers 574.2 kb 0.2%
Complete size 266.2 mb 100.0%
//195.6MB
-----------------------------------
Build Report
Uncompressed usage by category:
Textures 103.3 mb 32.3%
Meshes 0.0 kb 0.0%
Animations 15.5 kb 0.0%
Sounds 2.9 mb 0.9%
Shaders 182.9 kb 0.1%
Other Assets 3.0 mb 0.9%
Levels 7.9 mb 2.5%
Scripts 3.4 mb 1.1%
Included DLLs 11.3 mb 3.5%
File headers 574.2 kb 0.2%
Complete size 319.7 mb 100.0%
具体的に何が増減してるかはよく分からなかった。
Complete sizeだけが膨れている。
意味がわからない・・・
気が動転してReimport All
やエディタの再起動、Addressable Asset Systemに登録してるAssetのRemoveと再登録などを試してみる。
そして再ビルド。
────────242.8MB。
最近みたアニメの映像が脳裏に浮かぶ。
まるでがん細胞が無限に増殖しているよう・・・
もうダメだ。かゆうm
追記
調査状況です
APKファイルを解凍して調べてみたところ、bundleファイルが増殖してますね・・・ #Unity
— アズマゴロ―@デジゲー博C-02a (@azumagoro) October 3, 2018
①APK 139.5MB ※最初のやつ
②APK 242.8MB ※最後の1つ前
③APK 315.6MB ※最後にビルドしたやつ pic.twitter.com/mfv8R4d08L