0

any of you know what is happening with my project ?

There is this error:

ld: symbol(s) not found for architecture arm64

unity_ios

Unity Player Settings is like this:

player_settings

4

1 回答 1

1

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

Unity 提供的 iOS 64 位升级指南指出

如何在 iOS 上开始使用 IL2CPP

在 Player Settings 的 Scripting Backend 下拉菜单中选择它。

在此处输入图像描述

默认情况下,它将为通用架构(包括 ARM64 和 ARMv7)构建,如果需要,您可以在播放器设置中切换到特定架构。在您的应用程序启动并以 64 位运行之前,有许多事情需要完成:

  • 您需要支持 64 位的设备进行测试。这些都是配备 A7 或更高版本芯片的 iOS 设备(目前有: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 总是(即使剥离级别设置为禁用)执行某种托管代码剥离。有时你需要帮助它。在 iOS 播放器尺寸优化手册中查找 link.xml 指南。

故障排除

  1. 问:我的代码在 IL2CPP 上的运行速度比在 Mono 上慢。为什么?答:确保您在 Xcode Release 配置中测试您的代码性能。如果问题仍然存在,请提交错误报告!
  2. 问: Unity 生成的 Xcode 项目无法编译并出现以下或类似错误:找不到方法:'未找到默认构造函数...ctor() of System.ComponentModel.Int64Converter'。答: 反序列化器和序列化器通常仅通过 .NET 反射 API 引用某些类型,在这种情况下,这些方法甚至类可能会从项目中剥离。您可以通过 link.xml 或通过引入在您的脚本之一中明确引用它的虚拟代码来提示托管代码剥离器使用特定的类/方法。
  3. 问:Unity 生成的 Xcode 项目无法编译并出现其他错误。答:请验证您的所有插件是否支持 ARM64 和 IL2CPP,如果是这种情况,请提交错误报告并将您的项目(或仅编写部分脚本)附加到错误报告中。谢谢!
于 2017-08-18T05:03:23.877 回答