IL2CPP是唯一支持在iOS上部署到ARM 64位的脚本后端,因此必须部署到Apple应用商店以发布新应用。
There iOS 64 bit Upgrade guide provided by Unity表明
如何在iOS上开始使用IL2CPP
在“播放器设置”的“脚本后端”下拉列表中选择它。
默认情况下,它将构建通用体系结构(包括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位支持编译所有本机插件
(或作为源代码提供)。如果您使用的是第三方插件,
你应该联系你的插件供应商获得64位能力和
该插件的IL2CPP兼容版本。目前全部最新
已知Prime31插件很好。
- 如果您是插件供应商或只是拥有自己的原生插件
那么你需要记住几件事:
(1) IL2CPP与Mono Runtime API不兼容(未曝光),这意味着如果插件使用mono_ *函数将不再链接。解决此问题的最佳方法是切换到托管委托/回调方法,并将托管回调传递到插件的本机端,并在某些本机数据或事件到达时从那里调用它们。
(2)所有作为预编译静态库(.a文件)的插件现在都应包含ARM64切片。
(3)在进行本机代码/类型转换时请记住,指针和长整数现在是64位宽,而整数仍然是32宽。
- 为了最大限度地减少C ++代码的生成量,IL2CPP始终是(即使是
剥离级别设置为已禁用)执行某种托管代码
剥离。有时您需要帮助它。寻找link.xml
iOS播放器尺寸优化手册中的指南。
<强>疑难解答强>
- 问:我的代码在IL2CPP上比在Mono上运行速度慢。为什么? A:制作
确保您在Xcode版本中测试代码性能
组态。如果问题仍然存在,请提交错误报告!
- 问: Unity生成的Xcode项目无法使用以下或编译
类似的错误:找不到方法:&#39;默认构造函数不是
发现... System.ComponentModel.Int64Converter&#39;的ctor()。 答强>
反序列化器和序列化器通常仅通过引用某些类型
.NET Reflection API,在这种情况下,这些方法甚至是类
可能会被剥夺项目。您可以提示托管代码剥离器
通过link.xml或via使用特定的类/方法
引入在其中一个中明确引用它的伪代码
你的脚本。
- 问:Unity生成的Xcode项目无法与其他一些项目进行编译
错误。答:请验证您的所有插件是否支持ARM64和IL2CPP
如果是这种情况,请提交错误报告并附上您的
项目(或只是编写部分脚本)到错误报告。谢谢!
醇>