最佳答案
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 位支持来编译所有 native 插件 (或作为源代码提供)。如果您使用的是 3rd 方插件, 您应该联系您的插件供应商以获得 64 位功能并 该插件的 IL2CPP 兼容版本。目前都是最新的 众所周知,Prime31 插件非常好。
- 如果您是插件供应商或只有自己的原生插件 那么你需要记住以下几点:
(1) IL2CPP 与 Mono Runtime API 不兼容(未公开),这意味着如果插件使用 mono_* 函数将不再链接。解决此问题的最佳方法是切换到托管委托(delegate)/回调方法,并将托管回调传递到插件的 native 端,并在某些 native 数据或事件到达时从那里回调它们。
(2) 所有以预编译静态库(.a 文件)形式提供的插件现在都应包含 ARM64 切片。
(3) 在进行 native 代码/类型转换时请记住,指针和长整型现在是 64 位宽,而整型仍然是 32 位宽。
- 为了最大限度地减少生成的 C++ 代码量,IL2CPP 始终是(即使在 剥离级别设置为禁用)执行某种托管代码 剥离。有时你需要帮助它。寻找link.xml iOS 播放器尺寸优化手册中的指南。
疑难解答
- 问:我的代码在 IL2CPP 上的运行速度比在 Mono 上慢。为什么? 答:制作 确保您在 Xcode Release 中测试您的代码性能 配置。如果问题仍然存在,请提交错误报告!
- 问: Unity 生成的 Xcode 项目无法通过以下或 类似错误:找不到方法:'默认构造函数不存在 找到...System.ComponentModel.Int64Converter 的 ctor()'。 答: 反序列化器和序列化器通常仅通过以下方式引用某些类型 .NET 反射 API,在这种情况下,这些方法甚至类 可能会从项目中剥离。您可以提示托管代码剥离器 该特定类/方法通过 link.xml 或通过 引入在其中一个中明确引用它的虚拟代码 你的脚本。
- 问:Unity 生成的 Xcode 项目无法与其他一些项目一起编译 错误。 A: 请验证您的所有插件是否支持 ARM64 和 IL2CPP 如果是这种情况,请提交错误报告并附上您的 项目(或只是编写其中的一部分)到错误报告中。谢谢!
关于ios - 无法将 iOS 项目与 il2cpp 和 Unity 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45747958/