React Native 跨平台鸿蒙开发实战:构建 CI/CD 与自动化发布流程

人们眼中的天才之所以卓越非凡,并非天资超人一等而是付出了持续不断的努力。1 万小时的锤炼是任何人从平凡变成超凡的必要条件。------------ 马尔科姆·格拉德威尔

🌟 Hello,我是 Xxtaoaooo!

🌈 "代码是逻辑的诗篇,架构是思想的交响"

React Native 跨平台鸿蒙开发实战:构建 CI/CD 与自动化发布流程

随着项目的迭代,手动打包发布不仅低效,而且容易出错。对于 React Native (RN) 鸿蒙应用,构建一套自动化的持续集成与持续部署(CI/CD)流水线,是实现工程化标准化的关键一步。本文将介绍如何利用 GitHub Actions 或 Jenkins 搭建 RN 鸿蒙应用的自动化构建流程。


一、鸿蒙命令行构建工具:Hvigor

自动化构建的基础是命令行工具。鸿蒙开发套件提供了 hvigor,类似于 Android 的 Gradle。

1.1 常用构建命令

在项目根目录下,我们通常会封装 package.json 脚本:

json 复制代码
"scripts": {
  "build:hap:debug": "hvigorw assembleHap --mode debug",
  "build:hap:release": "hvigorw assembleHap --mode release",
  "build:app": "hvigorw assembleApp"
}

1.2 签名配置自动化

在 CI 环境中,我们无法使用 IDE 的自动签名,必须配置手动签名。通常的做法是将证书文件(.p12, .cer, .p7b)加密存储在 CI 的 Secrets 中,并在构建时解密。


二、基于 GitHub Actions 的 CI 流水线

GitHub Actions 是目前最流行的 CI 工具之一,且免费额度足够开源或小型项目使用。

2.1 Workflow 配置文件示例

创建 .github/workflows/harmony-build.yml

yaml 复制代码
name: Build HarmonyOS App

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
          cache: 'npm'

      - name: Install Dependencies
        run: npm ci

      - name: Setup Java
        uses: actions/setup-java@v3
        with:
          distribution: 'zulu'
          java-version: '17'

      - name: Setup HarmonyOS SDK
        # 这里假设使用了社区封装好的 Action 或自行下载 SDK 命令行工具
        run: |
          curl -L -o command-line-tools.zip <SDK_URL>
          unzip command-line-tools.zip -d sdk

      - name: Decode Signing Keys
        env:
          SIGN_KEY_BASE64: ${{ secrets.SIGN_KEY_BASE64 }}
        run: |
          echo $SIGN_KEY_BASE64 | base64 -d > harmony/sign.p12

      - name: Build HAP
        run: cd harmony && ./hvigorw assembleHap --mode release

      - name: Upload Artifact
        uses: actions/upload-artifact@v3
        with:
          name: app-release
          path: harmony/entry/build/default/outputs/default/entry-default-signed.hap

核心点评

这个流程涵盖了环境准备、依赖安装、证书解密、构建打包、产物上传的全过程。最棘手的部分通常是 HarmonyOS SDK 的命令行工具配置,因为目前华为官方尚未提供公开的 Docker 镜像,通常需要自建构建镜像。


三、多环境管理与版本控制

在实际开发中,我们通常有 Dev、Staging、Prod 三个环境,它们对应不同的 API 地址和应用包名。

3.1 环境变量配置

可以使用 react-native-config 库(需鸿蒙适配版)或简单的 JS 配置文件。

javascript 复制代码
// config.js
import { NativeModules } from 'react-native'

const env = NativeModules.BuildInfo.env || 'dev'

const configs = {
  dev: { API_URL: 'https://dev.api.com' },
  prod: { API_URL: 'https://api.com' },
}

export default configs[env]

3.2 自动化版本号管理

在 CI 流程中,我们可以根据 Commit 数量自动递增 Version Code。

bash 复制代码
# 获取 git commit 数量作为 version code
VERSION_CODE=$(git rev-list --count HEAD)
# 使用 sed 修改 build-profile.json5 中的 versionCode
sed -i "s/\"versionCode\": [0-9]*/\"versionCode\": $VERSION_CODE/" harmony/AppScope/app.json5

四、发布到 AppGallery Connect

构建完成后,下一步是发布到华为应用市场(AppGallery)。

4.1 自动化发布 API

AppGallery Connect 提供了 REST API,允许通过脚本上传软件包并提交审核。
华为应用市场 AppGallery Connect API CI Server (Jenkins/GitHub) 华为应用市场 AppGallery Connect API CI Server (Jenkins/GitHub) 1. 获取 Access Token Token 2. 获取上传地址 Upload URL 3. 上传 .app / .hap 文件 File ID 4. 更新应用文件信息 5. 提交审核 进入人工审核队列

图 1:自动化发布流程时序图

4.2 灰度发布策略

为了降低风险,建议采用灰度发布。

  1. 开放式测试:在 AGC 后台创建测试计划,邀请内部人员或种子用户通过测试链接下载。
  2. 分阶段发布:审核通过后,选择"分阶段发布",先覆盖 1% -> 5% -> 20% -> 100% 的用户,观察崩溃率和反馈。

4.3 整体 CI/CD 架构图

部署阶段
构建阶段
代码提交
dev
main
Git Push
触发 Webhook
拉取代码
Run Lint & Tests
Build RN Bundle
Build HAP
Branch?
上传至蒲公英/Fir
上传至 AGC
触发灰度发布

图 2:RN 鸿蒙应用 CI/CD 整体架构

🌟 嗨,我是 Xxtaoaooo!

⚙️ 【点赞】让更多同行看见深度干货

🚀 【关注】持续获取行业前沿技术与经验

🧩 【评论】分享你的实战经验或技术困惑

作为一名技术实践者,我始终相信:

每一次技术探讨都是认知升级的契机,期待在评论区与你碰撞灵感火花 🔥

欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net

相关推荐
Xxtaoaooo2 小时前
React Native 跨平台鸿蒙开发实战:状态管理与数据持久化方案
react native·react.js·harmonyos
Easonmax2 小时前
基础入门 React Native 鸿蒙跨平台开发:模拟一电风扇
react native·react.js·harmonyos
九 龙2 小时前
Flutter框架跨平台鸿蒙开发——生日礼物推荐APP的开发流程
flutter·华为·harmonyos·鸿蒙
心态还需努力呀2 小时前
【鸿蒙PC命令行适配】xxHash 在鸿蒙 PC 上的适配移植实战与部署详解
华为·harmonyos·鸿蒙·openharmony
木斯佳2 小时前
HarmonyOS 6实战(源码教学篇)— Speech Kit 新特性【仿某云音乐实现并集成AI字幕】
人工智能·华为·harmonyos
[H*]3 小时前
Flutter框架跨平台鸿蒙开发——Hero共享元素动画详解
flutter·华为·harmonyos
[H*]3 小时前
Flutter框架跨平台鸿蒙开发——Hero转场效果详解
flutter·华为·harmonyos
Dragon Wu3 小时前
React Native MMKV完整封装
前端·javascript·react native·react.js
前端不太难3 小时前
HarmonyOS PC 应用的维护成本,从哪来?
状态模式·harmonyos