文档

支持

迁移到新版 Xcode 后出现错误

Resolve errors caused by migrating to a new Xcode version.
阅读时间2 分钟最后更新于 19 天前

症状

从旧版 Xcode 迁移到新版本后出现错误。以下是 UBA/Xcode 日志中表明存在此问题的常见错误消息和警告:
  • 编译器因符号未找到而失败:
    • ld: symbol(s) not found for architecture arm64clang: error: linker command failed with exit code 1 (use -v to see invocation)
  • iOS 部署目标版本不受支持:
    • warning: The iOS deployment target 'IPHONEOSDEPLOYMENTTARGET' is set to 10.0, but the range of supported deployment target versions is 11.0 to 16.1.99
  • 签名需要未选中的开发团队:
    • error: Signing for "gRPC-C++-gRPCCertificates-Cpp" requires a development team. Select a development team in the Signing & Capabilities editor. (in target 'gRPC-C++-gRPCCertificates-Cpp' from project 'Pods')

原因

在更改 Xcode 版本时,如果某些组件、包或插件与新版本的 Xcode 不兼容,通常会出现这些错误。

解决方案

首先,确保能够在批处理模式下使用代码仓库的全新克隆版本(无本地缓存库)进行本地构建,并且在构建 Xcode 项目时,除了在 Build Automation 目标中所做的更改之外,无需进行任何其他更改。 在批处理模式下成功进行本地构建后,确保本地使用的
cocoapods
版本与 Build Automation 中使用的版本相匹配。如果版本不匹配,请使用以下构建前脚本来安装正确的版本。以下示例适用于
cocoapods
1.12.0 版本:
gem install cocoapods -v 1.12.0echo "current cocoapods version: "gem which cocoapods
"UBA - Cocoapods 构建脚本"
要检查本地的
cocoapods
版本,请在终端中使用以下命令:
pod --version
您可以将
cocoapods
固定到特定版本,以确保所有构建中使用的版本保持一致。您可以使用外部工具(例如 External Dependency Manager for Unity)来执行此操作,也可以直接编辑
Dependencies.xml
文件。使用此工具时,如果指定精确版本(例如
7.0.0
)而不是表达式(例如
~> 7.0
,表示使用大于 7.0 的任何版本),则可以保证依赖包版本不会改变,避免引入任何新的错误。
如果问题仍未解决,请提交支持工单,以便支持团队可以进一步调查。要从 Unity Dashboard 提交工单,请打开 DevOps,然后选择 Help & Support(帮助与支持)> Ticket(工单)> File a ticket(提交工单)

其他资源