构建适用于 iOS 的 Objective-C 或 Swift 应用

重要

Visual Studio App Center 计划于 2025 年 3 月 31 日停用。 虽然可以继续使用 Visual Studio App Center,直到它完全停用,但你可以考虑迁移到几个建议的替代方法。

详细了解支持时间线和替代方法。

若要生成第一个本机 iOS 应用,必须执行以下操作:

  1. (GitHub、Bitbucket、VSTS、Azure DevOps) 连接到存储库服务帐户
  2. 选择应用所在的存储库和分支
  3. 配置生成的项目或工作区,以及要生成的方案

注意

若要在实际设备上运行应用,必须使用有效的预配配置文件和证书对生成进行代码签名。

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.plistProduction-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 文件夹,可能需要使用 SaveSave 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 上。