U3D

UnityのStrippingLevel、[Unity3D]はlink.xmlを使用してstrippinglevelを制御し、dllライブラリのサイズを縮小し、インストールパッケージのサイズを最適化します



Strippinglevel Unity



StrippingLevelの役割

StrippingLevelは、パッケージ化されたプレーヤーの音量を下げるために使用されます

示されているように。 1つ目は、Strip Byte Codeパッケージのサイズを選択することであり、1つ目は、Disabledパッケージのサイズを選択することです。明らかなStripByte Codeパッケージのサイズは、ストリッピングなしのパッケージよりも小さく、約1Mです。 A
画像



StrippingLevelオプションの副作用

ストリッピングレベルを使用する場合、一部のAPIはAPIの実行中に例外を報告する場合があることに注意してください。たとえば、ストリップバイトコードが選択されている場合、ストリップがアウトであるため、HttpWebRequestは例外System.NotSupportedExceptionを報告します。 A
画像

/// /// Get the size of the downloaded file /// /// The length. /// URL. public static long GetLength (string url) { HttpWebRequest requet = HttpWebRequest.Create(url) as HttpWebRequest requet.Method = 'HEAD' HttpWebResponse response = requet.GetResponse() as HttpWebResponse UnityEngine.Debug.LogFormat('GetLength StatusCode:{0}', response.StatusCode) return response.ContentLength }
  • 1
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 十一
  • 12
  • 13

link.xmlを使用して、削除できないクラスを手動で除外します

'mscorlib'> <type fullname='System.Reflection' preserve='all'/> <type fullname='System.Security.Cryptography' preserve='all'/> <type fullname='System.Runtime.CompilerServices' preserve='all'/> <type fullname='System.Runtime.InteropServices' preserve='all'/> <type fullname='System.Diagnostics' preserve='all'/> <type fullname='System.Security' preserve='all'/> <type fullname='System.Security.Permissions' preserve='all'/>
  • 1
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 十一

参照リンク: https://docs.unity3d.com/Manual/iphone-playerSizeOptimization.html



インストールパッケージのサイズを縮小したり、unity64 IL2CPPに対応したりしても、StrippingLevel関数はデフォルトでオンになり、DLLのスペースはライブラリの分割によって縮小されます。

問題は、カスタムライブラリがxmlやwebclientでカプセル化されたhttpリクエストなど、いくつかのタイプを使用することです。任意に分析された場合、それは絶対に許可されません。




Assets /の下にlink.xmlファイルを追加して、分析されていないクラスを手動で除外できます。

<linker> <assembly fullname='mscorlib'> <type fullname='System.Reflection' preserve='all'/> <type fullname='System.Security.Cryptography' preserve='all'/> <type fullname='System.Runtime.CompilerServices' preserve='all'/> <type fullname='System.Runtime.InteropServices' preserve='all'/> <type fullname='System.Diagnostics' preserve='all'/> <type fullname='System.Security' preserve='all'/> <type fullname='System.Security.Permissions' preserve='all'/> assembly> linker>
上記のように、アセンブリが実際にはdllライブラリの名前になるように、形式をlink.xmlに保持します。 1:dllライブラリ内の名前空間全体2:特定の名前空間内の特定のクラスを除外します

名前空間全体を除外するための補足は、次のように追加できます。

<assembly fullname='JsonDotNet'> <namespace fullname='Newtonsoft.Json' preserve='all'/> assembly>
dllライブラリの表示については、デフォルトのモノラルエディタまたはVSを使用して、ディレクトリファイル分類のdllをクリックして表示できます。

link.xmlに追加する必要のあるクラスまたは名前空間を知る方法。この特別な名前空間を使用して知ることができるのはあなただけです。または、これらのクラススペースエラーを確認し、xcodeデバッグエラーとEclipseデバッグ実マシンランタイムエラーを介して追加することもできます。



整理する。元のリンクは次のとおりです

元の:https://blog.csdn.net/lingyanpi/article/details/77484719

オリジナル:http://www.voidcn.com/article/p-htqggtmn-nb.html