如何解决 Unity3D iOS 版本上的 AOT 和代码剥离

Posted

技术标签:

【中文标题】如何解决 Unity3D iOS 版本上的 AOT 和代码剥离【英文标题】:How to solve AOT and code stripping on Unity3D iOS builds 【发布时间】:2017-12-11 09:26:28 【问题描述】:

当 IL2CPP 编译器开始从您的 ios 构建中的外部程序集 (dll) 中剥离您的代码时,您应该怎么做。导致您的 JSON 反序列化代码中断。

【问题讨论】:

【参考方案1】:

1) 确保您使用的是 JSON.Net 的 Unity3d“调整”版本。您可以在这里找到最新版本:Json.Net.Unity3D。此版本不使用动态代码 - 因此对于 Ahead-of-time 编译器来说是“安全的”。

2) 确保将正确的保存行添加到 Unity3D“link.xml”文件中:

<linker>
  <assembly fullname="AssemblyName.Common">
     <type fullname="AssemblyName.Common.*" preserve="all" />
   </assembly>
</linker>

* 将确保所有命名空间以及所有类都被保留 - 并且不会被剥离。

应该可以的。

【讨论】:

除非您正在做一些非常复杂的事情,否则您应该使用 Unity 内置的 JsonUtility。虽然很高兴知道这个答案中有什么。 JsonUtility 是非常基本的,我建议完全相反:你应该只在你做一些超级简单的事情时使用它。 lysergic-acid - 我想你和程序员在这里说同样的话。除此之外 - 我的原始帖子旨在更多地关注使用 IL2CPP 编译器进行 AOT 目标构建时可能发生的激进剥离。更多信息在这里:link

以上是关于如何解决 Unity3D iOS 版本上的 AOT 和代码剥离的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D 实现简单的语音聊天 [Android版本]

Unity3D - 将在 iOS 设备上剪辑纹理的着色器

同一项目上的角度 AOT 和 JIT

Xamarin.iOS项目编译提示Could not AOT the assembly

AOT Build 上的 Kendo Angular2 输入组件损坏

在unity3d 接入Android的时候出现如下问题.请问如何解决