【Unity】空のプロジェクトのアプリサイズを小さくする

DEVELOP, 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 を有効化。

アーキテクチャを 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 へ変更

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 へ変更

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となり半分以下になりました。まだいけると思いますが、このくらいが特に面倒な手を踏まずに実行できるレベルなのではと感じました。

Posted by kazupon