生成适用于 Android 的 React Native 应用

重要

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

详细了解支持时间表和替代方案

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

若要开始生成第一个 React Native Android 应用,必须:

  1. 连接到存储库服务帐户(GitHub、Bitbucket、VSTS、Azure DevOps)。
  2. 选择应用所在的存储库和分支。
  3. 选择要生成的项目 package.json
  4. 设置第一个生成。

注意

若要使应用在实际设备上运行,生成必须是使用有效证书签名的代码。

1.链接存储库

如果以前尚未连接到存储库服务帐户,必须先执行此操作。 帐户连接后,选择 React Native 项目所在的存储库。 必须具有管理员和拉取权限才能为存储库设置生成。

2.选择分支

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

3.设置第一个生成

在首次生成之前,必须配置 React Native 项目。

3.1. 集成

选择项目。package.json App Center 将自动从其关联的 build.gradle (应用级别) 文件中提取信息,包括依赖项、生成工具版本、生成类型和产品风格。

注意

为了获得最佳性能,分析目前仅限于四个目录级别,包括存储库的根目录。

3.2. 生成变体

可用的生成变体将从项目的 build.gradle (应用级别) 文件中指定的生成类型和产品风格填充。 选择应生成哪个生成变体。

注意

App Center Build 支持将生成变体作为生成类型(调试、发布或自定义定义)和一个可选产品风格的组合来查找生成变体。 目前不支持检测多种产品风格的组合。

3.3. Node.js 版本

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

3.4. 生成触发器

默认情况下,每当开发人员推送到配置的分支时,都会触发新的生成。 这称为“持续集成”。 如果想要手动触发新生成,可以在配置窗格中更改此设置。

3.5. 生成 Android 应用捆绑包(.aab)

Android 应用捆绑包是一种分发格式,可以上传到 Play Store。 它用于为特定设备生成优化的 APK。 可以在官方 Android 文档中了解有关 Android 应用捆绑包的详细信息,这也有助于了解是否要与常规捆绑包一起生成捆绑包.apk.

在 Android 应用捆绑包的选项上切换,以生成除 .aab /> 以外的 .apk选项。 build.gradle 如果(应用级别)文件包含android.bundle块,则此选项将自动打开。

3.6. 递增版本号

启用后,应用AndroidManifest.xml中的版本代码会自动为每个生成递增。 更改发生在实际生成期间,不会提交到存储库。

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

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

3.8. 代码签名

如果启用,成功的生成将生成 .apk 文件和附加 .aab 文件。 若要将内部版本发布到 Play Store,必须使用存储在密钥存储中的有效证书进行签名。 若要对从分支生成的生成进行签名,请在配置窗格中启用代码登录,将密钥存储上传到存储库,并在配置窗格中提供相关值。 可以阅读有关 Android 代码签名 App Center 的 Android 代码签名文档的详细信息。 .aab将使用与 ..apk. 相同的凭据进行签名。

3.9. 分发生成

可以将每个成功生成的分支配置为分发到以前创建的通讯组或存储目标。 可以添加新的通讯组或 从分发服务中配置存储连接 。 始终有一个名为“协作者”的默认通讯组,其中包含有权访问应用的所有用户。

注意

如果分发到 Google Play 商店,则首选 Android 应用捆绑包(.aab),如果启用,则会分发。 对于 App Center 通讯组和 Intune 存储目标,即使.aab也生成了常规,也会使用常规.apk

4.生成结果

生成触发器后,生成将处于以下状态之一:

  • 已排队 - 生成位于等待释放资源的队列中
  • 生成 - 生成正在运行预定义的任务
  • 成功 - 生成已完成且成功
  • 失败 - 生成已完成但失败;可以通过下载并检查生成日志来排查出错的问题
  • 已取消 - 生成已被用户操作取消或超时

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>
    |-- <build-step-2>
    |--
    |-- <build-step-n> (e.g. n_Post Job Cleanup.txt)

生成步骤特定的日志(位于 build/ 存档目录中)有助于排查和了解生成失败的原因。

4.2。 应用(.apk)

该文件 .apk 是存储 Android 应用的 Android 应用程序打包文件。 如果生成已正确签名,则可以在实际设备上安装应用并部署到 Play Store。 如果生成尚未签名,则应用可以在模拟器上运行或用于其他目的。

5. 支持的版本和要求

构建 Android 应用支持的最低版本为 5.0(API 级别 21)。 Android 应用可以具有运行所需的最低 API 级别,但必须至少面向 API 级别 21。

6. 生成提示

6.1. Yarn

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

6.2. 自定义生成脚本

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

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

      "scripts": {
        ...
        "postinstall" : "npx jetify" // 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: Add your signing key file (from base64 encoded environment variable)
    base64 -d <<< "$ANDROID_JSON_KEY_FILE" > android/keystores/json_key_file.json
    

6.3. 生成多个 APK

对于 Android 上的 React Native,默认禁用通用 APK 生成。 如果应用配置设置为生成多个 APK,例如每个 CPU 体系结构或屏幕配置的不同 API,则还需要确保生成通用 APK。 App Center 的生成系统适用于一个主要 APK 文件,并将忽略特定于特定 CPU/ABI 或屏幕密度的所有 APK。

若要详细了解 APK 拆分以及如何构建通用 APK,请阅读相应的 Android 开发人员指南。 因此,请确保已 universalApk 设置为 true React Native 生成配置。