【Unity】空のプロジェクトのアプリサイズを小さくする
Unity アプリのサイズを小さくしたい。空のプロジェクトからどれくらい小さくできるのか色々試してみます。
目次
確認環境
バージョン
2019.2.10f1
プラットフォーム
Android
Minimum API Level
6.0 'Marshmallow’
最適化
Mono ではビルドしない。IL2CPP
試す環境はこんな感じです。それでは始めてみたいと思います。
空のプロジェクト
空のプロジェクトは3Dの空プロジェクトから作成しています。
初期状態
空のプロジェクトが作成されたら早速ビルドします。
16,505KB。デカい。ここから小さくしてみます。
サポートするアーキテクチャの変更
ProjectSettings の項目を変更する。
- Other Settings
- Configuration
- Scripting Backend Mono → IL2CPP へ変更
- Target Architectures ARMv7 を無効化。ARM64 を有効化。
- Configuration
アーキテクチャを ARM64 のみにして 32bit 対応を切りました。Google 的にも64bit 必須とのことなので問題ないでしょう。この状態で、
7,676KB。一気に半分になりました。
ビルドログを確認する
ビルドログを確認してアプリに含まれる内容を確認します。
Build Report
Uncompressed usage by category (Percentages based on user generated assets only):
Textures 0.0 kb 0.0%
Meshes 0.0 kb 0.0%
Animations 0.0 kb 0.0%
Sounds 0.0 kb 0.0%
Shaders 19.4 kb 0.1%
Other Assets 0.7 kb 0.0%
Levels 69.4 kb 0.5%
Scripts 687.8 kb 4.8%
Included DLLs 13.3 mb 94.5%
File headers 12.2 kb 0.1%
Total User Assets 14.1 mb 100.0%
Complete build size 47.8 mb
DLL の割合が94.5%。素材は何も入れていないので当然と言えば当然ですが、もう少し小さくしたい。
最適化レベルを変更する
ProjectSettings の項目を変更する。
- Other Settings
- Optimization
- Managed Stripping Level をLow → High へ変更
- Optimization
7,386KB。 7,676KB から290KB削減。
ビルドインスクリプトの確認
無駄なソースコードが取り込まれていないか確認します。
0.2 kb 0.0% Packages/com.unity.timeline/Runtime/AssetUpgrade/AnimationPlayableAssetUpgrade.cs
0.2 kb 0.0% Packages/com.unity.test-framework/UnityEngine.TestRunner/NUnitExtensions/Runner/RestoreTestContextAfterDomainReload.cs
0.2 kb 0.0% Packages/com.unity.ugui/Tests/Runtime/Canvas/RectMask2DWithNestedCanvasCullsUsingCorrectCanvasRect.cs
0.2 kb 0.0% Packages/com.unity.test-framework/UnityEngine.TestRunner/NUnitExtensions/Runner/UnityLogCheckDelegatingCommand.cs
Packages/com.unity.test-framework は 開発中はあると便利かもしれませんが、リリース時には要らないでしょうし削ります。
test-framework スクリプトの除去
- メニューの Window -> Package Manager を開く。
- In Project -> Test Framework を Remove で削除。
7,383KB。3KB削減。
未使用なパッケージを無効化する
- メニューの Window -> Package Manager を開く。
- Build-in packages から未使用なパッケージを無効化する。
無効化したパッケージ
- Cloth
- ScreenCapture
- Terrain
- Terrain Physics
- Tilemap
- Unity Analytics
- Vehicles
- Video
- VR
- Wind
- XR
7,187KB。196KB減。 使わないパッケージは無効化するのも一つの手です。
不要な DLL を取り込まない
初期状態で取り込まれる DLL リスト
Mono dependencies included in the build
Dependency assembly - System.Diagnostics.StackTrace.dll
Dependency assembly - System.Globalization.Extensions.dll
Dependency assembly - System.Runtime.Serialization.Xml.dll
Dependency assembly - System.Xml.XPath.XDocument.dll
Dependency assembly - netstandard.dll
Dependency assembly - Mono.Security.dll
Dependency assembly - System.ComponentModel.Composition.dll
Dependency assembly - System.Configuration.dll
Dependency assembly - System.Core.dll
Dependency assembly - System.Data.dll
Dependency assembly - System.Drawing.dll
Dependency assembly - System.EnterpriseServices.dll
Dependency assembly - System.IO.Compression.FileSystem.dll
Dependency assembly - System.IO.Compression.dll
Dependency assembly - System.Net.Http.dll
Dependency assembly - System.Numerics.dll
Dependency assembly - System.Runtime.Serialization.dll
Dependency assembly - System.ServiceModel.Internals.dll
Dependency assembly - System.Transactions.dll
Dependency assembly - System.Xml.Linq.dll
Dependency assembly - System.Xml.dll
Dependency assembly - System.dll
Dependency assembly - mscorlib.dll
Dependency assembly - Unity.TextMeshPro.dll
Dependency assembly - Unity.Timeline.dll
Dependency assembly - UnityEngine.UI.dll
Dependency assembly - nunit.framework.dll
多い。ちょっと数を減らしたい。
API Compatibility Level を.NET 4.x へ変更
- ProjectSettings の項目を変更する。
- Other Settings
- Configuration
- Api Compatibility Level を .NET Standard 2.0 → .NET 4.x へ変更
- C++ Compiler Configuration をMaster へ変更
- Configuration
- Other Settings
7,166KB。21KB減。アプリサイズはあまり減りませんでしたが、取り込まれるDLLの数が減ります。
Mono dependencies included in the build
Dependency assembly - Mono.Security.dll
Dependency assembly - System.Configuration.dll
Dependency assembly - System.Core.dll
Dependency assembly - System.Xml.dll
Dependency assembly - System.dll
Dependency assembly - mscorlib.dll
Dependency assembly - Unity.TextMeshPro.dll
Dependency assembly - Unity.Timeline.dll
Dependency assembly - UnityEngine.UI.dll
Dependency assembly - nunit.framework.dll
スッキリしました。
まとめ
apk サイズは初期状態と比べると16,505KB → 7,166KBとなり半分以下になりました。まだいけると思いますが、このくらいが特に面倒な手を踏まずに実行できるレベルなのではと感じました。