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

相关推荐
梦想不只是梦与想7 小时前
HarmonyOS应用分层架构设计
harmonyos·分层架构·一次开发,多端部署
MardaWang10 小时前
当滚动逃离了框架 ——HarmonyOS Web 与原生混排滚动的冲突本质与解法
harmonyos·arkts·鸿蒙·deveco studio
tsqtsqtsq030911 小时前
DevEco Studio 介绍
harmonyos
传奇开心果编程13 小时前
【现代声明式UI学与练】第4课 列表渲染与 key——如何高效渲染列表、key 的作用、列表重排时的状态保持
学习·flutter·react native·ui·swiftui·android jetpack
HwJack2014 小时前
【共创稿事节】HarmonyOS 7文旅展陈展厅大空间 3DGS 重建的分块策略与拼接踩坑
3d·华为·harmonyos
m0_7381858216 小时前
Flutter 鸿蒙化实战:media_info 适配 OpenHarmony,媒体信息与缩略图
flutter·华为·harmonyos·鸿蒙·媒体
白帽攻防录17 小时前
SRC 挖洞:Claude Code Action 供应链 RCE 深度复盘,CVE-2026-47751 一个 PR 怎么偷走你所有 CI/CD 密钥
网络安全·ci/cd·供应链安全
m0_7381858217 小时前
Flutter 鸿蒙化实战:just_audio 适配 OpenHarmony,功能强大的播放器
flutter·华为·harmonyos·鸿蒙
翼辉cto17 小时前
Kotlin Multiplatform 三方库 SQLDelight 的 OpenHarmony 鸿蒙化适配实战
开发语言·kotlin·harmonyos