iOS 生成故障排除
重要
Visual Studio App Center 计划于 2025 年 3 月 31 日停用。 虽然可以继续使用 Visual Studio App Center,直到它完全停用,但你可以考虑迁移到几个建议的替代方法。
找不到 Xcode 方案
xcworkspace
生成 或 需要xcproject
共享的 Xcode 方案。 Xcode 方案保存在本地,以便 Xcode 可以访问它们。 默认情况下,方案不会与他人共享或包含在源代码管理中。
若要在 Xcode 中共享方案,请使用以下步骤:
- 选择“ 产品 > 方案 > 管理方案”。
- 将 xcproject/xcworkspace 的方案设置为 共享。
- 方案的容器必须设置为要生成的 Xcode 项目或工作区。
- 将
.xcscheme
文件添加到源代码管理并推送到远程存储库,以便 App Center 可以访问它。
警告
确保你的 xcshareddata/xcschemes/
文件夹不在文件中 .gitignore
。 这是 Xcode 存储文件的位置 .xcscheme
。 App Center 依赖于这些文件来正确生成项目。 仅将 .xcscheme
导出到其他文件夹中将 不起作用。
我的 iOS 生成失败,出现“clang: error: linker 命令失败,退出代码 1”
此错误可能是使用 xcodeproj 而不是工作区生成 App Center 造成的。 将 CocoaPods 添加到项目时,在 App Center 中生成时切换到使用工作区。
指示器:在生成日志中查找此行:
ld: library not found for -lPods-GarageController
clang: error: linker command failed with exit code 1 (use -v to see invocation)
** ARCHIVE FAILED **
若要修复此错误,请打开项目的“生成”配置,然后单击“ 保存”。 App Center 将自动正确选择工作区,以便将来生成。
iOS 签名问题说明
注意
使用非 ascii 字符的签名标识在生成中不受支持。
处理预配配置文件和证书可能是一个具有挑战性的过程。 以下提示应可帮助你成功对 iOS 应用进行签名:
将签名更改推送到项目后,请在 App Center 中保存生成配置。 在 App Center 中,任何分支的生成配置都存储 Xcode 项目的两个值:
CODE_SIGN_STYLE
) 文件夹中的 文件中.xcodeproj
设置project.pbxproj
的 和DEVELOPMENT_TEAM
(。 每当在手动签名和自动签名之间更改或切换开发团队时,请确保在推送更改后将生成配置保存在 App Center 上。 如果在推送后未保存,生成可能会失败并出现签名错误。使用自动签名时拖放正确的预配配置文件。 在 Xcode 中,在“ 签名”下目标的“常规”选项卡中,单击 “Xcode 托管配置文件”旁边的信息图标。 然后,你将看到一个包含配置文件信息的弹出窗口。 单击左上角的 PROV 图标并将其拖动到所需位置 (,如下所示) 。
使用手动和自动签名时,请记下 App Center 当前支持的选项。 App Center 完全支持手动 iOS 应用签名,因此可以使用任何类型的配置文件或证书。 验证上传到 App Center 的预配配置文件和证书与在项目中指定的内容匹配。 如果已启用自动管理 Xcode 中的 登录 ,App Center 支持使用开发人员证书和配置文件进行应用签名, (不支持分发) 。 上传到 App Center 时,需要使用 Xcode 中自动生成的预配配置文件。
仍然遇到麻烦?
若要排查并启动并运行生成注册,我们建议执行以下步骤:
- 在 Xcode 项目中设置手动登录,并确保它在本地工作。
- 验证后,提交更改并将其推送到存储库。
- 准备在 Xcode 目标中选择的预配配置文件和证书,并将其上传到 App Center 生成配置。
- 最重要的是:在将新证书和配置文件保存到生成配置之前,请确保已推送项目的最新状态。
我的 .ipa 文件在哪里?
Xcodebuild 与 xcrun 不同,如果生成未签名,则不允许生成 .ipa
文件。 未签名的生成将改为生成 .xcarchive
。 如果要生成包含 .ipa
未签名生成的项目的文件,可以使用 该文件 .xcarchive
执行此操作。
使用 Xcode 的 iOS 应用失败,出现位码版本无效错误
如果生成失败,则 error: Invalid bitcode version (Producer: '802.0.38.0_0' Reader: '800.0.42.1_0')
使用的是由比项目更新版本的 Xcode 生成的库或 Pod。 可以在 App Center 中更新项目和生成配置,以使用较新版本的 Xcode,或者切换到问题库的备用版本,该库使用匹配的 Xcode 版本进行编译。
我的 iOS 应用无法运行测试
测试失败的一个常见原因是链接器命令遇到类似于以下错误:
ld: directory not found for option iPhoneSimulator10.3.sdk/Developer/Library/Frameworks
❌ ld: embedded dylibs/frameworks are only supported on iOS 8.0 and later (@rpath/XCTest.framework/XCTest) for architecture x86_64
❌ clang: error: linker command failed with exit code 1 (use -v to see invocation)
此错误的可能原因是 Apple Mach-O 链接器 的链接类型未设置为 静态库。 若要成功生成和测试应用,请确保测试目标中的 Apple Mach-O 链接器的链接类型设置为静态库。
我在 Xcode 9 上使用 CocoaPods 的 iOS 生成一直失败,我该怎么办?
这可能是因为 Pod 项目中的签名配置与 Main 项目中的签名配置不同。 Pod 是否已签入存储库? 如果是这样,Pod 项目必须使用与 Main 项目相同的签名方法。
如果 Pod 未签入,可能存在不同的问题。 在预生成脚本的 GitHub 问题中,可以使用一些解决方法。
由于我已将项目升级到 Xcode 10 beta,我的应用无法生成,并出现 错误“目标之间的依赖项周期”
Xcode 10 的新生成系统检测生成中的依赖项周期,如果存在,则生成失败。
有关如何修复生成的详细信息,请参阅 Apple 有关解析常见依赖项周期类型的文档。