【问题标题】:Can't link iOS project with il2cpp and Unity无法将 iOS 项目与 il2cpp 和 Unity 链接
【发布时间】:2017-08-23 14:19:46
【问题描述】:

你们中有人知道我的项目发生了什么吗?

有这个错误:

ld: 未找到架构 arm64 的符号

Unity播放器设置是这样的:

【问题讨论】:

    标签: ios unity3d il2cpp


    【解决方案1】:

    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 播放器尺寸优化手册中的指南。

    疑难解答

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 2021-04-18
      • 1970-01-01
      • 2020-05-09
      • 2012-10-22
      • 2017-11-25
      • 2022-10-07
      相关资源
      最近更新 更多