MRTK e remoção de código gerenciado — MRTK2
Ao usar o back-end de script IL2CPP do Unity (opcional no Unity 2018.4, necessário em 2019 e mais recente), ocorre a remoção de código gerenciado . O vinculador do Unity executa esse processo para reduzir o tamanho binário, bem como para diminuir os tempos de build.
O Realidade Misturada Toolkit usa um arquivo, link.xml
, para influenciar como o vinculador do Unity processa assemblies MRTK. Esse arquivo, descrito na íntegra na documentação do Unity, fornece ao vinculador instruções sobre como preservar o código quando seu uso não pode ser inferido (por exemplo, usado por meio de reflexão).
Como uma plataforma flexível e personalizável, o MRTK criará o link.xml
arquivo em Assets/MixedRealityToolkit.Generated
na importação, caso ele não exista. Os arquivos de link.xml pré-existentes não são substituídos. É recomendável que link.xml
e link.xml.meta
sejam adicionados ao controle de versão. Os desenvolvedores devem se sentir à vontade para personalizar Assets/MixedRealityToolkit.Generated/link.xml
para atender às necessidades do projeto.
Por padrão, o arquivo link.xml criado pelo MRTK preserva a totalidade dos assemblies mostrados nos dados a seguir.
<linker>
<!--
This link.xml file is provided to prevent MRTK code from being optimized away
during IL2CPP builds.More details on when this is needed and why this is needed
can be found here: https://github.com/microsoft/MixedRealityToolkit-Unity/issues/5273
If your application doesn't use some specific services (for example, if teleportation system is
disabled in the profile), it is possible to remove their corresponding lines down
below(in the previous example, we would remove the TeleportSystem below).
It's recommended to start with this list and narrow down if you want to ensure
specific bits of code get optimized away.
-->
<assembly fullname = "Microsoft.MixedReality.Toolkit" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.SDK" preserve="all"/>
<!-- Core systems -->
<assembly fullname = "Microsoft.MixedReality.Toolkit.Services.BoundarySystem" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Services.CameraSystem" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Services.DiagnosticsSystem" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Services.InputSystem" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Services.SceneSystem" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Services.SpatialAwarenessSystem" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Services.TeleportSystem" preserve="all"/>
<!-- Data providers -->
<assembly fullname = "Microsoft.MixedReality.Toolkit.Providers.LeapMotion" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Providers.OpenVR" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Providers.UnityAR" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Providers.WindowsMixedReality.Shared" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Providers.WindowsMixedReality" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Providers.XRSDK.WindowsMixedReality" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Providers.WindowsVoiceInput" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Providers.XRSDK" preserve="all"/>
<!-- Extension services -->
<assembly fullname = "Microsoft.MixedReality.Toolkit.Extensions.HandPhysics" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Extensions.Tracking" preserve="all"/>
<assembly fullname = "Microsoft.MixedReality.Toolkit.Extensions.SceneTransitionService" preserve="all"/>
</linker>
Para obter mais informações sobre o formato de arquivo link.xml, consulte a documentação do Unity.