在 App Center 中配置 React Native iOS 版本

重要

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

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

App Center 可以生成以 React Native 0.34 或更高版本编写的React Native应用。

生成适用于 iOS 的 React Native 应用:

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

注意

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

1. 链接存储库

首先,将存储库服务帐户连接到 App Center。 连接帐户后,选择 iOS 项目所在的存储库。 您必须具有存储库的管理员和拉取权限。

2. 选择分支

选择存储库后,选择要生成的分支。 默认情况下,将列出所有活动分支。

3. 设置第一个生成

在首次生成之前,需要配置React Native项目。

3.1. Project

选择项目的 package.json。 App Center 将自动检测关联的 Xcode 项目/工作区。

3.2. Xcode 版本

从下拉列表中选择要运行生成的 Xcode 版本。 如果切换“使用旧版生成系统”为 On,则无论项目或工作区设置如何,都将使用旧版生成系统。 如果切换“使用旧版生成系统”为 Off,则将使用项目或工作区设置中的生成系统配置。

注意

  • 工作区设置应提交到存储库
  • 如果未提交工作区设置,将使用新式生成系统

3.3. Node.js 版本

选择要用于生成的 Node.js 版本。 详细了解 如何选择 Node.js 版本

3.4. 生成触发器

默认情况下,每次开发人员推送到配置的分支时,都会触发新的生成。 如果希望手动触发新版本,可以在配置窗格中更改此设置。

3.5. 递增生成号

启用后, CFBundleVersion 应用的项目的 Info.plist 中每个生成的 会自动递增。 更改发生在生成前,不会提交到存储库。

3.6. 代码签名

成功的生成会生成一个 .ipa 文件。 若要在设备上安装生成,必须使用有效的预配配置文件和证书对生成进行签名。 若要对从分支生成的生成进行签名,请在配置窗格中启用代码签名, 并将预配配置文件 (.mobileprovision 文件) 和有效的证书 (.p12) 以及证书的密码上传。

Xcode 项目中的设置必须与要上传的文件兼容。 详细了解 App Center 的 iOS 代码签名Apple 开发人员文档

使用 应用或 watchOS 扩展对应用 进行签名需要每个扩展额外的预配配置文件。

3.7. 在真实设备上启动成功的生成

使用新生成的 .ipa 文件测试应用是否在真实设备上启动;启动测试将增加大约 10 分钟的总生成时间。 详细了解 如何配置启动测试

3.8. CocoaPods

App Center 会扫描所选分支,如果找到 Podfile,它将在每个生成开始时自动执行一 pod install 个步骤。 这可确保安装所有依赖项。

3.9. 分发到通讯组

将分支中的每个成功生成配置为分发到以前创建的通讯组。 从“分发”部分内添加新的通讯组。 始终有一个名为“协作者”的默认通讯组,其中包含有权访问该应用的所有用户。

保存配置后,将自动启动新的生成。

4.生成结果

生成可以处于以下状态之一:

  • 已排队 - 生成排队等待可用资源
  • 生成 - 生成正在运行并执行预定义的任务
  • 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 应用的 iPhone 应用程序存档文件。

  • 如果生成正确签名,则可以在 .ipa 签名时使用的预配配置文件中包含的真实设备上安装文件。 有关使用 App Center 进行代码签名和分发的更多详细信息,请参阅 App Center 的 iOS 代码签名文档
  • 如果在生成期间未对生成进行签名,开发人员可以使用代码签名) 在本地 (对文件进行签名 .ipa ,或者用于其他目的 (例如,上传到测试服务以在实际设备上进行 UI 测试或在模拟器) 中运行。
  • 未签名的内部版本不会生成 .ipa 文件。 未签名生成的项目是 .xcarchive 文件,可用于使用 Xcode 存档组织程序生成 .ipa 文件。

4.3. 源映射和符号文件

生成React Native iOS 应用时,JavaScript 源映射和一个或多个.dsym文件会随每个生成自动生成,并在生成完成后下载。

  • 如果之前已在应用中集成 App Center SDK 并启用了故障报告模块,则崩溃报告信标需要此 .dsym 文件和 JavaScript 源映射才能生成以显示人类可读 (符号化) 故障报告。
  • 如果之前在应用中集成过另一个 SDK 用于故障报告,则相应的服务需要 .dsym 文件和 JavaScript 源映射来显示人类可读 (符号化) 故障报告。

请记住,在 .dsym 对 进行代码签名 .ipa时,文件不会更改。 如果决定稍后对生成进行代码签名,则 .dsym 代码签名前生成的 仍然有效。

如果此应用包含崩溃 SDK,则将 iOS 符号和源映射发送到 App Center 崩溃服务。 符号将在本机堆栈和 JavaScript 堆栈上启用人类可读 (符号化) 故障报告。

5. 生成提示

5.1. Yarn

Yarn 是更快、更确定性的替代 npmyarn.lock如果存储库中位于 旁边的 package.json文件中,则 App Center 将使用 Yarn,在生成开始时执行此操作yarn install。 否则,它将执行 npm install

5.2. 自定义生成脚本

在执行 App Center 的默认生成命令之前,有几个选项可用于运行脚本。

  • 在项目的 package.json 文件中创建安装后脚本。 这会在安装依赖项后自动执行。

      "scripts": {
        ...
        "postinstall" : "eslint ./" // other examples: "node ./postinstall.js" or "./postinstall.sh"
      },
    
  • 使用 App Center 的 自定义生成 脚本功能编写 shell 脚本。

    #!/usr/bin/env bash
    
    # Example: Authenticate with private NPM registry
    echo "//registry.npmjs.org/:_authToken=$NPM_AUTH_TOKEN" > ~/.npmrc
    
    # Example: Create a file that's not in version control (from base64 encoded environment variable)
    base64 -d <<< "$MY_FILE_CONTENTS" > ios/SuperSecretFile.txt