プレイヤーのファイルサイズを削減する 2 つの主な方法は、Xcode 内で適切な リリース用ビルド を作成することと、Unity の ストリッピングレベル を変更することです。
リリース用のビルドは、Xcode コマンドの Product > Archive で行われることを想定しています。このコマンドを使用すると、リリース設定で しかも すべてのデバッグシンボルの削除を確実に実行できます。 このコマンドを発した後、Xcode は Organizer ウィンドウの Archives タブに切り替わります。アプリケーションのサイズを計算する方法やその他のサイズを縮小するためのヒントについては、Apple の Technical Q&A Reducing the size of my App を参照してください。
ノート: 無線でのダウンロード制限 (現在は150MB) を目標としている場合は、エラーに対して若干の余裕を見ておくことをお勧めします。
以下の方法のストリッピングを行い、Mono スクリプトバックエンドビルドのサイズ最適化を行います。
Strip assemblies レベル: スクリプトのバイトコードが分析され、スクリプトから参照されないクラスやメソッドは DLL から削除されます。その結果それらを AOT コンパイルフェーズから除外することができます。この最適化によりメインのバイナリサイズや付随する DLL のサイズは削減され、リフレクションが使用されないかぎり問題ありません。
Strip ByteCode レベル: .NET DLL (Data フォルダーに保管) はストリッピングされてメタデータのみになります。これができるのは、すべてのコードが AOT フェーズですでにプリコンパイルされていて、メインバイナリにリンクされているためです。
Use micro mscorlib レベル: 特別で小さいバージョンの mscorlib が使用されます。いくつかのコンポーネント、例えば、Security、Reflection.Emit、Remoting、non Gregorian calendars、その他はこのライブラリから除かれます。さらに内部コンポーネント間の相互依存関係は最小限になります。この最適化によりメインバイナリや mscorlib.dll サイズを削減できますが、いくつかの System や System.Xml アセンブリクラスと互換性がないため慎重に使用してください。
これらのレベルは累積なので、レベル 3 の最適化は暗示的にレベル 1、2 を含み、レベル 2 は暗示的にレベル 1 を含みます。
Micro mscorlib はコアライブラリが大きくストリッピングされたバージョンです。Unity で Mono ランタイムに必要なアイテムのみが残ります。micro mscorlib を使用するベストプラクティスは、アプリケーションで必要ない .NET のクラスや機能を使用しないことです。GUID などは、そのいい例です。GUID はカスタム作成された擬似 GUID で簡単に置き換えることが可能で、結果的によりよいパフォーマンスやアプリケーションサイズを得られます。
詳細は managed bytecode stripping with IL2CPP を参照してください。
ノート アプリケーションに必要とされているのに誤ってストリッピングされてしまったクラスがどれなのかを判断するのが難しい場合があります。シミュレーターでストリッピングされたアプリケーションを実行し Xcode コンソールのメッセージをチェックすると、有用な情報が得られることがしばしばあります。
空プロジェクトはサイズ最適化をすべてオフにすると App Store で 22MB 未満です。コードストリッピングを使用すると、メインカメラのみの空のシーンは App Store でおよそ 12MB 未満に縮小できます (zip や DRM 設定)。
アプリをパブリッシュするときに App Store では最初にバイナリファイルを暗号化して zip で圧縮します。暗号化によってコードセグメントがよりランダムになり、圧縮の条件が悪くなります。前出の「リリースモードでビルド」を参考にして、提出する前に App Store でのサイズを見積もる方法を確認してください。
2018–06–14 Page amended
2017–14–06 - IL2CPP のストリッピング セクションを更新