构建适用于 iOS 的 Objective-C 或 Swift 应用
重要
Visual Studio App Center 计划于 2025 年 3 月 31 日停用。 虽然可以继续使用 Visual Studio App Center,直到它完全停用,但你可以考虑迁移到几个建议的替代方法。
若要生成第一个本机 iOS 应用,必须执行以下操作:
- (GitHub、Bitbucket、VSTS、Azure DevOps) 连接到存储库服务帐户
- 选择应用所在的存储库和分支
- 配置生成的项目或工作区,以及要生成的方案
注意
若要在实际设备上运行应用,必须使用有效的预配配置文件和证书对生成进行代码签名。
1. 链接存储库
如果以前未连接到存储库服务帐户,则必须授权连接。 连接帐户后,选择 iOS 项目所在的存储库。 App Center 要求你的帐户具有管理员和拉取权限才能为存储库设置生成。
2. 选择分支
选择存储库后,选择要生成的分支。 默认情况下,将列出所有活动分支。
3. 设置第一个生成
在首次生成之前配置 iOS 项目。
3.1 项目/工作区和方案
对于生成配置,需要 Xcode 项目或 Xcode 工作区以及共享方案。 只要方案位于分支中正确的文件夹) ,App Center 会自动检测项目、工作区和共享方案 (。 选择要生成的项目或工作区以及相应的方案。
如果未找到方案,请确保所需的方案已共享,并且其容器是所选的项目或工作区。 还应确认这些更改已签入要配置的分支。
请记住,无法导出 .xcscheme
文件并将其放置在项目中的任意位置。 它必须位于 xcshareddata/xcschemes/
文件夹中。 请确保此路径不在文件中 .gitignore
。
3.2. Xcode 版本
选择要运行生成的 Xcode 版本。
3.3. 生成触发器
默认情况下,每次开发人员推送到配置的分支时,都会触发新的生成。 此过程称为“持续集成”。 如果希望手动触发新的生成,可以在生成配置中更改此设置。
3.4. 递增生成号
启用后, CFBundleVersion
应用的 中的 Info.plist
对于每个生成自动递增。 更改发生在生成前,不会提交到存储库。
注意
若要使递增生成号正常工作,请将 命名 .plist file
为 ,例如 *Info.plist
Production-Info.plist
。
3.5. 测试
如果所选方案有一个测试操作,其中选择了测试目标,则可以将测试配置为作为每个生成的一部分运行。 App Center 当前可以运行 XCTest 单元测试。
3.6. 代码签名
为真实设备构建 iOS 应用需要使用有效凭据对其进行签名。 若要在 App Center 中对内部版本进行签名,请在配置窗格中启用代码签名, 并上传预配配置文件 (.mobileprovision
) 和有效的证书 (.p12
) ,以及证书的密码。
Xcode 项目中的设置必须与要上传的文件兼容。 可以在 官方 Apple 开发人员文档中阅读有关代码签名的详细信息。
具有 app 或 watchOS 扩展 的应用需要为每个扩展签名额外的预配配置文件。
3.7. 在真实设备上启动成功的生成
使用新生成的 .ipa
文件测试应用是否在真实设备上启动。 在实际设备上启动将增加大约 10 分钟的总生成时间。 详细了解 如何配置启动测试。
3.8. CocoaPods
App Center 会扫描所选分支,如果找到 Podfile,它将在每个生成开始时自动执行一 pod install
个步骤。 此步骤将确保已安装所有依赖项。
警告
如果存储库已包含 /Pods 文件夹,App Center 会假定你已签入存储库中的 Pod,并且将不再执行 pod install
。 如果删除或修改 /Pods 文件夹,可能需要使用 Save
或 Save and Build
手动重新保存生成配置,更新才能生效。
3.9. 分发到通讯组
可以将分支中的每个成功生成配置为分发到以前创建的通讯组。 可以从“分发”部分内添加新的通讯组。 始终有一个名为“协作者”的默认通讯组,其中包含有权访问该应用的所有用户。
保存配置后,将自动启动新的生成。
4.生成结果
触发生成后,它可以处于以下状态:
- queued - 生成排队等待释放资源。
- 生成 - 生成正在运行预定义的任务。
- succeeded - 生成已完成且成功。
- failed - 生成已完成,但失败。 可以通过 检查生成日志来排查问题。
- 已取消 - 生成已被用户操作取消或超时
4.1. 生成日志
对于已完成的生成 (成功或失败) ,请下载日志以了解有关生成过程的详细信息。 App Center 提供包含以下文件的存档:
|-- 1_build.txt (this is the general build log)
|-- build (this folder contains a separate log file for each build step)
|-- <build-step-1> (e.g. 2_Get Sources.txt)
|-- <build-step-2> (e.g. 3_Pod install.txt)
|--
|-- <build-step-n> (e.g. n_Post Job Cleanup.txt)
特定于生成步骤的日志 (位于 build/
存档) 的目录中,有助于排查和了解生成失败的步骤和原因。
4.2. 应用 (.ipa)
文件 .ipa
是包含 iOS 应用的 iOS 设备应用程序存档文件。
- 未签名的内部版本不会生成
.ipa
文件。 未签名生成的项目是.xcarchive
可用于使用 Xcode 存档管理器生成.ipa
文件的文件。 - 如果生成正确签名,则可以将
.ipa
文件安装在与签名时使用的预配配置文件对应的真实设备上。 有关使用 App Center 进行代码签名和分发的更多详细信息,请参阅 App Center 的 iOS 代码签名文档。 - 如果生成尚未签名,
.ipa
则文件可由开发人员 (签名,例如,在本地使用代码签名) 或用于其他目的 (例如,上传到测试服务以在实际设备上进行 UI 测试或在模拟器) 中运行。
4.3. 符号文件 (.dsym)
这些文件 .dsym
包含应用的调试符号。
- 如果之前已在应用中将 App Center SDK 与已启用故障报告模块集成,则崩溃报告服务需要此
.dsym
文件才能生成以显示人工可读 (符号化) 故障报告。 - 如果以前在应用中集成了另一个 SDK 用于崩溃报告目的, (例如 HockeyApp SDK) ,则相应的服务需要
.dsym
文件显示人类可读的崩溃报告。
请记住,在 .dsym
对 进行代码签名 .ipa
时,文件不会更改。 如果决定稍后对生成进行代码签名,则 .dsym
代码签名前生成的 仍然有效。
支持的版本和要求
每次添加新版本的 Xcode 时,都会更新生成计算机 Xcode 版本详细信息。 我们会密切关注 Apple 发布的最新版本,并尽快将其包含在用于运行生成的 VM 上。