如何解决 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 和代码剥离的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.iOS项目编译提示Could not AOT the assembly