找回密码
 立即注册
首页 业界区 安全 【拥抱鸿蒙】基于 Cocos Creator 的 HarmonyOS 自动构建 ...

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

劝匠注 2025-5-30 15:19:19
概述

随着 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)。
获取命令行工具

下载与安装


  • 访问华为开发者网站:前往 华为 Developer 网站下载中心,搜索并下载最新版本的命令行工具 Command Line Tools for HarmonyOS NEXT Developer Beta1(5.0.3.404)。
  • 解压并配置环境变量:将下载的工具包解压后,将以下环境变量添加到 ~/.bash_profile(bash)或 ~/.zshrc(zsh)中:
    1. export PATH=~/command-line-tools/bin:$PATH
    复制代码
    配置完成后,使用以下命令使环境变量生效:
    1. source ~/.bash_profile
    复制代码
    1. source ~/.zshrc
    复制代码
配置 hvigor

hvigor 是一套基于任务管理机制的自动化构建工具,它为 HarmonyOS OS 应用的 JS/eTS 开发场景提供了任务注册编排、编译工程模型管理、编译配置定制以及插件扩展等核心能力。hvigor 的结构化模型由 build-profile.json5 和 hvigorfile.js 组成,其工程结构如下:
  1. rootProject                        // Hvigor 工程根目录
  2. ├── build-profile.json5            // 工程级别 Hvigor 配置,主要配置工程相关信息,包括子模块名字、路径等。
  3. ├── hvigorfile.js                  // 工程级别任务脚本,当前暂不支持自定义
  4. ├── moduleA
  5. │   ├── build-profile.json5  // 模块级别 Hvigor 配置,主要模块构建相关参数
  6. │   └── hvigorfile.js        // 模块级别任务脚本,当前暂不支持自定义
  7. └── moduleB
  8.     ├── build-profile.json5       // 模块级别 Hvigor 配置,主要模块构建相关参数
  9.     └── hvigorfile.js             // 模块级别任务脚本,当前暂不支持自定义
复制代码
在实际使用中,我们可以通过 hvigorw 命令来调用 hvigor 的功能,其基本使用格式为:
  1. hvigorw [taskNames...] <options>
复制代码
例如,我们可以使用 hvigorw clean 来清理构建环境,或者使用 hvigorw assembleHap 来生成 HAP 文件。
编写自动构建脚本

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

(1)下载并配置 Node.js

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它在构建过程中用于运行各种工具和脚本。以下是配置 Node.js 的脚本:
  1. init_Node() {
  2.   if [ ! -d "${NODE_HOME}" ]; then
  3.      mkdir "${NODE_HOME}"
  4.   fi
  5.   cd ${NODE_HOME}
  6.   wget --no-check-certificate -q "${node下载路径}" -O node-linux.tar.xz #下载node,需要替换node下载路径
  7.   tar -vxf node-linux.tar.xz
  8.   NODE_DIR=xxx #node压缩包文件里面的目录
  9.   cd ${NODE_DIR}
  10.   mv -f ./* .[^.]* ../
  11.   cd ..
  12.   rm -rf NODE_DIR node-linux.tar.xz
  13.   export NODE_HOME=${NODE_HOME}
  14.   export PATH=$NODE_HOME/bin:$PATH
  15.   node -v
  16.   npm config set registry=https://repo.huaweicloud.com/repository/npm/
  17.   npm config set @ohos:registry=https://repo.harmonyos.com/npm/
  18.   
  19.   npm config get @ohos:registry
  20.   npm config set proxy=http://user:password@proxy.server.com:port  #配置npm http代理,企业网络受限的情况下需要配置
  21.   npm config set https-proxy=http://user:password@proxy.server.com:port  #配置npm https代理,企业网络受限的情况下需要配置
  22.   npm info express
  23. }
复制代码
(2)下载并配置 JDK

JDK(Java Development Kit)是 Java 语言的软件开发工具包,它在构建过程中用于编译和运行 Java 代码。以下是配置 JDK 的脚本:
  1. init_JDK() {
  2.   if [ ! -d "${JAVA_HOME}" ]; then
  3.      mkdir "${JAVA_HOME}"
  4.   fi
  5.   cd ${JAVA_HOME}
  6.   wget --no-check-certificate -q "${jdk下载路径}" -O jdk-linux.tar.xz #下载jdk,需要替换jdk下载路径
  7.   tar -vxf jdk-linux.tar.xz
  8.   JDK_DIR=xxx #jdk压缩包文件里面的目录
  9.   cd ${JDK_DIR}
  10.   mv -f ./* .[^.]* ../
  11.   cd ..
  12.   rm -rf JDK_DIR jdk-linux.tar.xz
  13.   export JAVA_HOME=${JAVA_HOME}
  14.   export PATH=$JAVA_HOME/bin:$PATH
  15.   java -version
  16.   check "JDK install"
  17. }
复制代码
(3)配置 HarmonyOS SDK

HarmonyOS SDK 是开发 HarmonyOS 应用的核心工具包,它提供了必要的编译工具和运行时环境。以下是配置 SDK 的脚本:
  1. init_SDK() {
  2.   ./${COMMANDLINE_TOOL_DIR}/bin/sdkmgr install HarmonyOS-NEXT/DB1 --sdk-directory="/opt/HarmonyOS/SDK/" --accept-license
  3.   #设置hdc工具的环境变量,hdc工具在toolchains所在路径下,请以实际路径为准
  4.   export PATH=$HDC_HOME:$PATH
  5.   export HDC_HOME=/opt/HarmonyOS/SDK/HarmonyOS-NEXT-DB1/base/toolchains
  6.   export HOS_SDK_HOME=${HOS_SDK_HOME}
  7.   check "SDK install"
  8. }
复制代码
(4)安装 ohpm

ohpm 是 HarmonyOS 的包管理工具,用于管理和安装项目依赖。以下是安装 ohpm 的脚本:
  1. init_ohpm() {
  2.     # 初始化ohpm
  3.     OHPM_HOME=${COMMANDLINE_TOOL_DIR}/command-line-tools/ohpm
  4.     export PATH=${OHPM_HOME}/bin:$PATH
  5.     ohpm -v
  6.     # 配置ohpm仓库地址
  7.     ohpm config set registry=https://ohpm.HarmonyOS.cn/ohpm/
  8. }
复制代码
2. 同步代码
  1. synccode() {
  2.   PRO_PATH=$1; PRO_NAME=$2; REPO_URL=$3; BRAN_NAME=$4;
  3.   if [ ! -d $PRO_PATH ]; then
  4.     #新创建 Clone
  5.     echo "mkdir $PRO_PATH && cd $PRO_PATH && git clone -b $BRAN_NAME $REPO_URL $PRO_NAME && cd $PRO_NAME"
  6.     mkdir $PRO_PATH && \
  7.     cd $PRO_PATH && \
  8.     git clone -b $BRAN_NAME $REPO_URL $PRO_NAME && \
  9.     cd $PRO_NAME
  10.    
  11.     check "Git clone"
  12.   else
  13.     local NEW_PATH=${PRO_PATH}${PRO_NAME}
  14.     if [ ! -d ${NEW_PATH} ]; then
  15.       #新分支 Clone
  16.       echo "cd $PRO_PATH && git clone -b $BRAN_NAME $REPO_URL $PRO_NAME && cd $PRO_NAME"
  17.       cd $PRO_PATH && git clone -b $BRAN_NAME $REPO_URL $PRO_NAME && cd $PRO_NAME
  18.     else
  19.       #原分支 Checkout & Pull
  20.       echo "cd $PRO_PATH$PRO_NAME && git checkout . && git clean -df && git checkout -B $BRAN_NAME origin/$BRAN_NAME && git pull"
  21.       cd $PRO_PATH$PRO_NAME && \
  22.       git checkout . && \
  23.       git clean -df && \
  24.       git checkout -B $BRAN_NAME origin/$BRAN_NAME && \
  25.       git pull
  26.       if [[ ${VERSION_FLAG} != "X" ]]; then
  27.         echo "checkout 指定版本:${VERSION_FLAG}"
  28.         git checkout ${VERSION_FLAG}
  29.       fi
  30.       check "Git checkout & pull"
  31.     fi
  32.   fi
  33. }
复制代码
3. 从Cocos Creator导出HarmonyOS工程
  1. cocosbuild() {
  2.   local COCOS_APP_PATH="/Applications/CocosCreator/Creator/${COCOS_VERSION}/CocosCreator.app/Contents/MacOS/CocosCreator"
  3.   
  4.   echo "$COCOS_APP_PATH --project $1 --build configPath=./buildConfig/buildConfig_harmonryos.json"
  5.   
  6.   $COCOS_APP_PATH \
  7.   --project $1 \
  8.   --build configPath=./buildConfig/buildConfig_harmonryos.json
  9.   check "Cocos build"
  10. }
复制代码
4. 运行Gulp
  1. rungulp() {
  2.     RES_VERSION=$1
  3.     echo "/usr/local/bin/npm install"
  4.     /usr/local/bin/npm install
  5.     echo "/usr/local/bin/gulp --ver $RES_VERSION --platform harmonryos"
  6.     /usr/local/bin/gulp --ver $RES_VERSION --platform harmonryos
  7.     echo "rm -rf build/harmonryos/data/assets"
  8.     rm -rf build/harmonryos/data/assets
  9.    
  10.     echo "cp -r remote-assets/hall/$RES_VERSION/assets build/harmonryos/data/"
  11.     cp -r remote-assets/hall/$RES_VERSION/assets build/harmonryos/data/
  12.     echo "cp -r remote-assets/hall/$RES_VERSION/src build/harmonryos/data/"
  13.     cp -r remote-assets/hall/$RES_VERSION/src build/harmonryos/data/
  14.    
  15.     echo "/usr/local/bin/gulp copyCertificate --platform harmonryos"
  16.     /usr/local/bin/gulp copyCertificate --platform harmonryos
  17.     check "Run Gulp"
  18. }
复制代码
5. 构建出包
  1. buildHAP() {
  2.     # 根据业务情况适配local.properties
  3.     cd ${PROJECT_PATH}
  4.     echo "hwsdk.dir=${HOS_SDK_HOME}"  > ./local.properties
  5.     # 根据业务情况安装ohpm三方库依赖
  6.     ohpm_install "${PROJECT_PATH}"
  7.     ohpm_install "${PROJECT_PATH}/entry"
  8.     ohpm_install "${PROJECT_PATH}/xxx"
  9.     # 如果构建过程报错 ERR_PNPM_OUTDATED_LOCKFILE,需要增加配置:lockfile=false, 根据node版本选择设置方式:
  10.     # node.version<18
  11.     npm config set lockfile=false # 如果执行此命令报错,建议直接在镜像的.npmrc文件中需要增加一行配置:lockfile=false
  12.     # node.version>=18
  13.     #cat ${HOME}/.npmrc | grep 'lockfile=false' || echo 'lockfile=false' >> ${HOME}/.npmrc
  14.     # 根据业务情况,采用对应的构建命令,可以参考IDE构建日志中的命令
  15.     cd ${PROJECT_PATH}
  16.     chmod +x hvigorw
  17.     ./hvigorw clean --no-daemon
  18.     ./hvigorw assembleHap --mode module -p product=default -p debuggable=false --no-daemon # 流水线构建命令建议末尾加上--no-daemon
  19.     check "Hap Build"
  20. }
  21. install_hap() {
  22.     hdc file send "${PROJECT_PATH}/entry/build/default/outputs/default/entry-default-signed.hap" "data/local/tmp/entry-default-signed.hap"
  23.     hdc shell bm install -p "data/local/tmp/entry-default-signed.hap"
  24.     hdc shell rm -rf "data/local/tmp/entry-default-signed.hap"
  25.     hdc shell aa start -a MainAbility -b com.example.myapplication -m entry
  26.     check "HAP install"
  27. }
  28. # 使用ohpm发布har
  29. upload_har() {
  30.   ohpm publish pkg.har
  31. }
复制代码
6. 移动文件到WorkSpace
  1. movehap() {
  2.   local TARGET_HAP_NAME=${AUTO_BUILD_NUMBER}_${JOB_NAME}_${BUILD_VERSION}_${RES_VERSION}_${NET_MODE}_by_${USER_NAME}
  3.   local TARGET_HAP_PATH=$HOME/Desktop/Jenkins/Workspace/${JOB_NAME}/${TARGET_HAP_NAME}.hap
  4.   local ORIGIN_HAP_PATH=${1}/Project/build/harmonryos/proj/build/Debug/${PROJ_NAME}.hap
  5.   echo "cp ${ORIGIN_HAP_PATH} ${TARGET_HAP_PATH}"
  6.   cp ${ORIGIN_HAP_PATH} ${TARGET_HAP_PATH}
  7.   check "Move hap"
  8. }
复制代码
以上,就是整个自动构建的流程。

我是郑知鱼
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册