IL2CPP 是唯一支持在 iOS 上部署到 ARM 64 位的脚本后端,因此必须部署到 Apple 应用商店才能发布新应用。
There iOS 64 bit Upgrade guide provided by Unity 声明
如何在 iOS 上开始使用 IL2CPP
在 Player Settings 的 Scripting Backend 下拉菜单中选择它。
默认情况下,它将为通用架构(包括 ARM64 和 ARMv7)构建,如果需要,您可以在播放器设置中切换到特定架构。在您的应用程序启动并以 64 位运行之前,有许多事情需要完成:
- 您需要支持 64 位的设备才能进行测试。这些都是 iOS 设备
使用 A7 或更高版本的芯片(目前这些是:iPhone 5S、iPad Air、iPad
Mini Retina、iPhone 6、iPhone 6 Plus、iPad Mini 3、iPad Air 2)。
- 您的所有原生插件都需要编译为支持 64 位
(或作为源代码提供)。如果您使用的是 3rd 方插件,
您应该联系您的插件供应商以获得 64 位功能和
该插件的 IL2CPP 兼容版本。目前所有最新
众所周知,Prime31 插件很好。
- 如果您是插件供应商或只有自己的原生插件
那么你需要记住几件事:
(1) IL2CPP 与 Mono Runtime API 不兼容(未公开),这意味着如果插件使用 mono_* 函数将不再链接。解决此问题的最佳方法是切换到托管委托/回调方法,并将托管回调传递给插件的本机端,并在某些本机数据或事件到达时从那里回调它们。
(2) 所有作为预编译静态库(.a 文件)提供的插件现在都应包含 ARM64 切片。
(3)在进行本机代码/类型转换时,请记住,指针和长整数现在是 64 位宽,而整数仍然是 32 位宽。
- 为了尽量减少 C++ 代码的生成量,IL2CPP 始终是(即使当
剥离级别设置为禁用)执行某种托管代码
剥离。有时你需要帮助它。查找链接.xml
iOS 播放器尺寸优化手册中的指南。
疑难解答
-
问:我的代码在 IL2CPP 上的运行速度比在 Mono 上慢。为什么? 答:制作
确定你在 Xcode Release 中测试你的代码性能
配置。如果问题仍然存在,请提交错误报告!
-
问: Unity 生成的 Xcode 项目编译失败,出现以下情况或
类似错误:找不到方法:'没有默认构造函数
找到... ctor() of System.ComponentModel.Int64Converter'。 答:
反序列化器和序列化器通常仅通过以下方式引用某些类型
.NET 反射 API 以及在这种情况下这些方法甚至类
可能会从项目中剥离。您可以提示托管代码剥离器
该特定类/方法通过 link.xml 或通过
引入在其中之一中明确引用它的虚拟代码
你的脚本。
-
问:Unity 生成的 Xcode 项目无法与其他一些项目一起编译
错误。答: 请确认您的所有插件是否支持 ARM64 和 IL2CPP
如果是这种情况,请提交错误报告并附上您的
项目(或只是脚本的一部分)到错误报告。谢谢!