首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【拥抱鸿蒙】基于 Cocos Creator 的 HarmonyOS 自动构建

【拥抱鸿蒙】基于 Cocos Creator 的 HarmonyOS 自动构建

原创
作者头像
郑知鱼
修改2025-05-24 21:33:28
修改2025-05-24 21:33:28
1430
举报
题图
题图

概述

随着 Cocos Creator 新版本的发布,开发者们迎来了一个令人振奋的消息:Cocos Creator 现已支持发布到 HarmonyOS 平台。这为游戏开发者和应用开发者开辟了新的天地,使他们能够利用 HarmonyOS 的强大功能和生态优势,将作品推向更广阔的市场。

然而,传统的手动构建方式在面对频繁的版本迭代和复杂的项目管理时,往往效率低下且容易出错。为了提高开发效率,实现高效、稳定的构建与发布流程,我们迫切需要一种自动化解决方案。

幸运的是,华为官方提供了一套功能强大的命令行工具,包括 hvigor、ohpm、hdc 等,这些工具为自动化构建提供了坚实的基础。借助这些工具,我们可以通过编写脚本,轻松实现自动构建的流程。

本文将详细介绍如何使用 bash 脚本,在 Jenkins 构建平台上实现 HarmonyOS 的自动构建与发布。

在开始之前,我们需要明确构建机的环境配置,以确保整个构建流程能够顺利进行。以下是构建机的环境要求:

  • Cocos Creator 的版本:v2.4.14(目前官方 2.x 最新版本)或 v3.8.6(目前官方 3.x 最新版本);
  • DevEco Studio 版本:5.0.0 release(Mac);
  • SDK 版本:API 17(HarmonyOS NEXT Developer)。

获取命令行工具

下载与安装

  1. 前往下载最新版本的命令行工具 Command Line Tools for HarmonyOS NEXT Developer Beta1(5.0.3.404)。
  2. 将下载的工具包解压后,将以下环境变量添加到 ~/.bash\_profile(bash)或 ~/.zshrc(zsh)中:

export PATH=~/command-line-tools/bin:$PATH

配置完成后,使用以下命令使环境变量生效:

source ~/.bash\_profile

source ~/.zshrc

配置 hvigor

hvigor 是一套基于任务管理机制的自动化构建工具,它为 HarmonyOS OS 应用的 JS/eTS 开发场景提供了任务注册编排、编译工程模型管理、编译配置定制以及插件扩展等核心能力。hvigor 的结构化模型由 build-profile.json5hvigorfile.js 组成,其工程结构如下:

代码语言:bash
复制
rootProject                        // Hvigor 工程根目录

├── build-profile.json5            // 工程级别 Hvigor 配置,主要配置工程相关信息,包括子模块名字、路径等。

├── hvigorfile.js                  // 工程级别任务脚本,当前暂不支持自定义

├── moduleA

│   ├── build-profile.json5  // 模块级别 Hvigor 配置,主要模块构建相关参数

│   └── hvigorfile.js        // 模块级别任务脚本,当前暂不支持自定义

└── moduleB

    ├── build-profile.json5       // 模块级别 Hvigor 配置,主要模块构建相关参数

    └── hvigorfile.js             // 模块级别任务脚本,当前暂不支持自定义

在实际使用中,我们可以通过 hvigorw 命令来调用 hvigor 的功能,其基本使用格式为:

代码语言:bash
复制
hvigorw [taskNames...] <options>

例如,我们可以使用 hvigorw clean 来清理构建环境,或者使用 hvigorw assembleHap 来生成 HAP 文件。

编写自动构建脚本

为了实现自动构建,我们需要编写一个完整的 bash 脚本,该脚本将涵盖从环境配置到最终构建的全过程。以下是脚本的详细内容:

1. 配置环境

(1)下载并配置 Node.js

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它在构建过程中用于运行各种工具和脚本。以下是配置 Node.js 的脚本:

代码语言:bash
复制
init\_Node() {

  if [ ! -d "${NODE\_HOME}" ]; then 

     mkdir "${NODE\_HOME}"

  fi

  cd ${NODE\_HOME}

  wget --no-check-certificate -q "${node下载路径}" -O node-linux.tar.xz #下载node,需要替换node下载路径

  tar -vxf node-linux.tar.xz

  NODE\_DIR=xxx #node压缩包文件里面的目录

  cd ${NODE\_DIR}

  mv -f ./\* .[^.]\* ../

  cd ..

  rm -rf NODE\_DIR node-linux.tar.xz

  export NODE\_HOME=${NODE\_HOME}

  export PATH=$NODE\_HOME/bin:$PATH

  node -v

  npm config set registry=https://repo.huaweicloud.com/repository/npm/ 

  npm config set @ohos:registry=https://repo.harmonyos.com/npm/ 

  

  npm config get @ohos:registry

  npm config set proxy=http://user:password@proxy.server.com:port  #配置npm http代理,企业网络受限的情况下需要配置

  npm config set https-proxy=http://user:password@proxy.server.com:port  #配置npm https代理,企业网络受限的情况下需要配置

  npm info express

}
(2)下载并配置 JDK

JDK(Java Development Kit)是 Java 语言的软件开发工具包,它在构建过程中用于编译和运行 Java 代码。以下是配置 JDK 的脚本:

代码语言:bash
复制
init\_JDK() {

  if [ ! -d "${JAVA\_HOME}" ]; then 

     mkdir "${JAVA\_HOME}"

  fi



  cd ${JAVA\_HOME}

  wget --no-check-certificate -q "${jdk下载路径}" -O jdk-linux.tar.xz #下载jdk,需要替换jdk下载路径

  tar -vxf jdk-linux.tar.xz

  JDK\_DIR=xxx #jdk压缩包文件里面的目录

  cd ${JDK\_DIR}

  mv -f ./\* .[^.]\* ../

  cd ..

  rm -rf JDK\_DIR jdk-linux.tar.xz

  export JAVA\_HOME=${JAVA\_HOME}

  export PATH=$JAVA\_HOME/bin:$PATH

  java -version



  check "JDK install"

}
(3)配置 HarmonyOS SDK

HarmonyOS SDK 是开发 HarmonyOS 应用的核心工具包,它提供了必要的编译工具和运行时环境。以下是配置 SDK 的脚本:

代码语言:bash
复制
init\_SDK() {

  ./${COMMANDLINE\_TOOL\_DIR}/bin/sdkmgr install HarmonyOS-NEXT/DB1 --sdk-directory="/opt/HarmonyOS/SDK/" --accept-license



  #设置hdc工具的环境变量,hdc工具在toolchains所在路径下,请以实际路径为准

  export PATH=$HDC\_HOME:$PATH

  export HDC\_HOME=/opt/HarmonyOS/SDK/HarmonyOS-NEXT-DB1/base/toolchains 

  export HOS\_SDK\_HOME=${HOS\_SDK\_HOME}



  check "SDK install"

}
(4)安装 ohpm

ohpm 是 HarmonyOS 的包管理工具,用于管理和安装项目依赖。以下是安装 ohpm 的脚本:

代码语言:bash
复制
init\_ohpm() {

    # 初始化ohpm

    OHPM\_HOME=${COMMANDLINE\_TOOL\_DIR}/command-line-tools/ohpm

    export PATH=${OHPM\_HOME}/bin:$PATH

    ohpm -v

    # 配置ohpm仓库地址

    ohpm config set registry=https://ohpm.HarmonyOS.cn/ohpm/ 

}

2. 同步代码

代码语言:bash
复制
synccode() {

  PRO\_PATH=$1; PRO\_NAME=$2; REPO\_URL=$3; BRAN\_NAME=$4;

  if [ ! -d $PRO\_PATH ]; then

    #新创建 Clone

    echo "mkdir $PRO\_PATH && cd $PRO\_PATH && git clone -b $BRAN\_NAME $REPO\_URL $PRO\_NAME && cd $PRO\_NAME"



    mkdir $PRO\_PATH && \

    cd $PRO\_PATH && \

    git clone -b $BRAN\_NAME $REPO\_URL $PRO\_NAME && \

    cd $PRO\_NAME

    

    check "Git clone"

  else

    local NEW\_PATH=${PRO\_PATH}${PRO\_NAME}

    if [ ! -d ${NEW\_PATH} ]; then

      #新分支 Clone

      echo "cd $PRO\_PATH && git clone -b $BRAN\_NAME $REPO\_URL $PRO\_NAME && cd $PRO\_NAME"

      cd $PRO\_PATH && git clone -b $BRAN\_NAME $REPO\_URL $PRO\_NAME && cd $PRO\_NAME

    else

      #原分支 Checkout & Pull

      echo "cd $PRO\_PATH$PRO\_NAME && git checkout . && git clean -df && git checkout -B $BRAN\_NAME origin/$BRAN\_NAME && git pull"



      cd $PRO\_PATH$PRO\_NAME && \

      git checkout . && \

      git clean -df && \

      git checkout -B $BRAN\_NAME origin/$BRAN\_NAME && \

      git pull



      if [[ ${VERSION\_FLAG} != "X" ]]; then

        echo "checkout 指定版本:${VERSION\_FLAG}"

        git checkout ${VERSION\_FLAG}

      fi



      check "Git checkout & pull"

    fi

  fi

}

3. 从Cocos Creator导出HarmonyOS工程

代码语言:bash
复制
cocosbuild() {

  local COCOS\_APP\_PATH="/Applications/CocosCreator/Creator/${COCOS\_VERSION}/CocosCreator.app/Contents/MacOS/CocosCreator"

  

  echo "$COCOS\_APP\_PATH --project $1 --build configPath=./buildConfig/buildConfig\_harmonryos.json"

  

  $COCOS\_APP\_PATH \

  --project $1 \

  --build configPath=./buildConfig/buildConfig\_harmonryos.json



  check "Cocos build"

}

4. 运行Gulp

代码语言:bash
复制
rungulp() {

    RES\_VERSION=$1



    echo "/usr/local/bin/npm install"

    /usr/local/bin/npm install



    echo "/usr/local/bin/gulp --ver $RES\_VERSION --platform harmonryos"

    /usr/local/bin/gulp --ver $RES\_VERSION --platform harmonryos



    echo "rm -rf build/harmonryos/data/assets"

    rm -rf build/harmonryos/data/assets

    

    echo "cp -r remote-assets/hall/$RES\_VERSION/assets build/harmonryos/data/"

    cp -r remote-assets/hall/$RES\_VERSION/assets build/harmonryos/data/



    echo "cp -r remote-assets/hall/$RES\_VERSION/src build/harmonryos/data/"

    cp -r remote-assets/hall/$RES\_VERSION/src build/harmonryos/data/

    

    echo "/usr/local/bin/gulp copyCertificate --platform harmonryos"

    /usr/local/bin/gulp copyCertificate --platform harmonryos



    check "Run Gulp"

}

5. 构建出包

代码语言:bash
复制
buildHAP() {

    # 根据业务情况适配local.properties

    cd ${PROJECT\_PATH}

    echo "hwsdk.dir=${HOS\_SDK\_HOME}"  > ./local.properties

    # 根据业务情况安装ohpm三方库依赖

    ohpm\_install "${PROJECT\_PATH}"

    ohpm\_install "${PROJECT\_PATH}/entry"

    ohpm\_install "${PROJECT\_PATH}/xxx"



    # 如果构建过程报错 ERR\_PNPM\_OUTDATED\_LOCKFILE,需要增加配置:lockfile=false, 根据node版本选择设置方式:

    # node.version<18

    npm config set lockfile=false # 如果执行此命令报错,建议直接在镜像的.npmrc文件中需要增加一行配置:lockfile=false

    # node.version>=18

    #cat ${HOME}/.npmrc | grep 'lockfile=false' || echo 'lockfile=false' >> ${HOME}/.npmrc

    # 根据业务情况,采用对应的构建命令,可以参考IDE构建日志中的命令

    cd ${PROJECT\_PATH}

    chmod +x hvigorw

    ./hvigorw clean --no-daemon

    ./hvigorw assembleHap --mode module -p product=default -p debuggable=false --no-daemon # 流水线构建命令建议末尾加上--no-daemon



    check "Hap Build"

}



install\_hap() {

    hdc file send "${PROJECT\_PATH}/entry/build/default/outputs/default/entry-default-signed.hap" "data/local/tmp/entry-default-signed.hap"

    hdc bash bm install -p "data/local/tmp/entry-default-signed.hap" 

    hdc bash rm -rf "data/local/tmp/entry-default-signed.hap"

    hdc bash aa start -a MainAbility -b com.example.myapplication -m entry



    check "HAP install"

}



# 使用ohpm发布har

upload\_har() {

  ohpm publish pkg.har

}

6. 移动文件到WorkSpace

代码语言:bash
复制
movehap() {

  local TARGET\_HAP\_NAME=${AUTO\_BUILD\_NUMBER}\_${JOB\_NAME}\_${BUILD\_VERSION}\_${RES\_VERSION}\_${NET\_MODE}\_by\_${USER\_NAME}

  local TARGET\_HAP\_PATH=$HOME/Desktop/Jenkins/Workspace/${JOB\_NAME}/${TARGET\_HAP\_NAME}.hap

  local ORIGIN\_HAP\_PATH=${1}/Project/build/harmonryos/proj/build/Debug/${PROJ\_NAME}.hap



  echo "cp ${ORIGIN\_HAP\_PATH} ${TARGET\_HAP\_PATH}"

  cp ${ORIGIN\_HAP\_PATH} ${TARGET\_HAP\_PATH}



  check "Move hap"

}

以上,就是整个自动构建的流程。

我是郑知鱼🐳,欢迎大家讨论与指教。

如果你觉得有所收获,也请点赞👍🏻收藏⭐️关注🔍我吧~~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 获取命令行工具
    • 下载与安装
    • 配置 hvigor
  • 编写自动构建脚本
    • 1. 配置环境
      • (1)下载并配置 Node.js
      • (2)下载并配置 JDK
      • (3)配置 HarmonyOS SDK
      • (4)安装 ohpm
    • 2. 同步代码
    • 3. 从Cocos Creator导出HarmonyOS工程
    • 4. 运行Gulp
    • 5. 构建出包
    • 6. 移动文件到WorkSpace
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档