Unity-托管代码剥离(link.xml使用)

Unity托管代码剥离的意义

托管代码剥离,不仅可以减少生成的dll的大小,继而减少安装包的体积,对于一些小型单机 游戏尤其重要,同时也可以提高构建代码的速度,提高项目的开发速度。

Unity托管代码的设置

点击 Player Settings->Player->Managed Stripping Level 进入如下菜单:
Unity2020.3.26

  • Low: 根据一种保守的原则来剥离代码,因此实际剥离的代码非常少,对于包的大小作用很小。这是unity的il2cpp的默认剥离级别.
  • Medium:在Low和High中取得平衡,即没有Low那么谨慎,也不会像High那么极端
  • High: 优先考虑的是包的大小,而不是可用性。对于可用性,是通过辅助的link.xml来进行人为保留需要的库里面的命名空间或者制定的类.

link.xml简单使用

  • 在Assets目录下或者其子目录下定义一个link.xml文件
  • 编写link.xml,如下格式
<linker>
   <!--整个程序集-->
   <assembly fullname="Unity.Mono" preserve="all"/>
   <assembly fullname="Unity.ThirdParty" preserve="all"/>
   <assembly fullname="UnityEngine" preserve="all"/>
   <!--指定程序集中的指定命名空间-->
   <assembly fullname="JsonDotNet">
       <namespace fullname="Newtonsoft.Json" preserve="all"/>
   </assembly>
   <!--指定程序集某个类-->
   <assembly fullname="mscorlib">
       <type fullname="System.Diagnostics" preserve="all"/>
   </assembly>
</linker>
  • 在构建时,Unity会使用一个专门用于托管代码剥离的工具UnityLinker来进行剥离处理,其默认将unity中用到的所有程序集合并程一个整体程序集,然后根据一定规则,比如场景中游戏对象继承Monobehavior的对象,标记根元素,再次有根元素进行依赖查询,并将其他依赖的程序集或类或命名空间进行打标记。最后没有被标记的,将会被裁剪剥离。UnityLinker在构建时,回检查link.xml文件,将里面设置的忽略的程序集或者类型直接标记为根元素。因此可以保证不会被剥离。

猜你喜欢

转载自blog.csdn.net/zhush_2005/article/details/125229154