无法将iOS项目与il2cpp和Unity

时间:2017-08-18 03:18:03

标签: ios unity3d il2cpp

你们中的任何人都知道我的项目发生了什么?

出现此错误:

ld:找不到架构arm64的符号

unity_ios

Unity Player设置如下:

player_settings

1 个答案:

答案 0 :(得分:1)

IL2CPP是唯一支持在iOS上部署到ARM 64位的脚本后端,因此必须部署到Apple应用商店以发布新应用。

There iOS 64 bit Upgrade guide provided by Unity表明

如何在iOS上开始使用IL2CPP

在“播放器设置”的“脚本后端”下拉列表中选择它。

enter image description here

默认情况下,它将构建通用体系结构(包括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播放器尺寸优化手册中的指南。

<强>疑难解答

  1. 问:我的代码在IL2CPP上比在Mono上运行速度慢。为什么? A:制作 确保您在Xcode版本中测试代码性能 组态。如果问题仍然存在,请提交错误报告!
  2. 问: Unity生成的Xcode项目无法使用以下或编译 类似的错误:找不到方法:&#39;默认构造函数不是 发现... System.ComponentModel.Int64Converter&#39;的ctor()。 反序列化器和序列化器通常仅通过引用某些类型 .NET Reflection API,在这种情况下,这些方法甚至是类 可能会被剥夺项目。您可以提示托管代码剥离器 通过link.xml或via使用特定的类/方法 引入在其中一个中明确引用它的伪代码 你的脚本。
  3. 问:Unity生成的Xcode项目无法与其他一些项目进行编译 错误。答:请验证您的所有插件是否支持ARM64和IL2CPP 如果是这种情况,请提交错误报告并附上您的 项目(或只是编写部分脚本)到错误报告。谢谢!