在软件开发领域,自动化构建是提高开发效率和确保代码质量的重要手段。特别是在鸿蒙(OpenHarmony)应用开发中,自动化构建更是不可或缺。本文将详细介绍如何使用Jenkins命令行工具实现鸿蒙HAR应用的自动化构建打包,让开发流程更加高效、可靠。
随着鸿蒙系统的广泛应用,越来越多的开发者投入到鸿蒙应用的开发中。然而,手动构建和打包应用不仅耗时耗力,还容易出错。因此,实现自动化构建成为开发者的迫切需求。Jenkins作为一款开源的自动化服务器软件,以其强大的功能和灵活的插件体系,成为实现这一需求的理想选择。
在开始之前,请确保你已经安装了以下软件和环境:
实现鸿蒙HAR应用的自动化构建打包,核心在于以下三个步骤:初始化依赖、初始化工作环境、执行具体的构建任务。下面将详细介绍每个步骤的具体实现。
首先,需要使用ohpm命令来初始化项目所需的依赖。ohpm是鸿蒙的包管理工具,类似于npm或yarn。在Jenkins脚本中,可以使用以下命令来安装所有依赖:
/Applications/DevEco-Studio.app/Contents/tools/ohpm/bin/ohpm install --all --registry https://ohpm.openharmony.cn/ohpm/ --strict_ssl true
这条命令会从指定的ohpm仓库(https://ohpm.openharmony.cn/ohpm/)下载并安装所有在oh-package.json5中声明的依赖。
接下来,使用hvigorw脚本来初始化工作环境。hvigorw是鸿蒙的构建工具,用于执行构建、编译等任务。在Jenkins脚本中,可以使用以下命令来同步项目配置并初始化工作环境:
/Applications/DevEco-Studio.app/Contents/tools/node/bin/node /Applications/DevEco-Studio.app/Contents/tools/hvigor/bin/hvigorw.js --sync -p product=default --analyze=normal --parallel --incremental --daemon
这条命令会同步项目的配置信息,并根据指定的产品配置(product=default)初始化工作环境。同时,它还会开启并行构建、增量构建和守护进程等功能,以提高构建效率。
最后,使用hvigorw脚本来执行具体的构建任务。在Jenkins脚本中,可以使用以下命令来构建并打包HAR应用:
hvigorw --mode module -p product=default -p module=$moduleName@default -p buildMode=release assembleHar --analyze=normal --parallel --incremental --daemon
这条命令会根据指定的模块(module=$moduleName@default)和产品配置(product=default),以发布模式(buildMode=release)构建并打包HAR应用。同样地,它也开启了并行构建、增量构建和守护进程等功能。
将上述三个步骤整合到一个脚本中,就可以在Jenkins中执行完整的业务逻辑构建了。以下是一个示例脚本:
#!/bin/bash
# 设置DevEco Studio路径
DEVECO_STUDIO_PATH="/Applications/DevEco-Studio.app/Contents/tools"
# 初始化依赖
${DEVECO_STUDIO_PATH}/ohpm/bin/ohpm install --all --registry https://ohpm.openharmony.cn/ohpm/ --strict_ssl true
# 检查依赖安装是否成功
if [ $? -ne 0 ]; then
echo "依赖安装失败"
exit 1
fi
# 初始化工作环境
${DEVECO_STUDIO_PATH}/node/bin/node ${DEVECO_STUDIO_PATH}/hvigor/bin/hvigorw.js --sync -p product=default --analyze=normal --parallel --incremental --daemon
# 检查工作环境初始化是否成功
if [ $? -ne 0 ]; then
echo "工作环境初始化失败"
exit 1
fi
# 执行具体的构建任务
hvigorw --mode module -p product=default -p module=$moduleName@default -p buildMode=release assembleHar --analyze=normal --parallel --incremental --daemon
# 检查构建任务是否成功
if [ $? -ne 0 ]; then
echo "构建任务失败"
exit 1
fi
echo "构建成功"
将这个脚本保存为build.sh
,并在Jenkins中配置一个执行该脚本的构建任务,就可以实现鸿蒙HAR应用的自动化构建打包了。
通过本文的介绍,我们了解了如何使用Jenkins命令行工具实现鸿蒙HAR应用的自动化构建打包。这不仅提高了开发效率,还确保了代码质量。未来,随着鸿蒙系统的不断发展和完善,自动化构建工具也将更加智能和高效。我们可以期待更多的自动化工具和插件出现,为鸿蒙应用开发提供更加便捷和高效的解决方案。
希望本文对大家有所帮助!如果你有任何疑问或建议,请随时在评论区留言。
在DevEco Studio启动或项目初始化过程中,执行以下命令:
/Applications/DevEco-Studio.app/Contents/tools/ohpm/bin/ohpm install --all --registry https://ohpm.openharmony.cn/ohpm/ --strict_ssl true
作用是为鸿蒙(HarmonyOS/OpenHarmony)项目安装或更新所有依赖包。以下是具体解析:
参数/路径 | 说明 |
---|---|
/Applications/DevEco-Studio.app/.../ohpm |
调用DevEco Studio内置的 ohpm(OpenHarmony Package Manager)工具,专用于管理鸿蒙生态的依赖包。 |
install --all |
安装项目配置文件(如oh-package.json5 )中定义的所有依赖项(包括dependencies 和devDependencies )。 |
--registry https://ohpm.openharmony.cn/ohpm/ |
指定鸿蒙官方包仓库作为依赖源,确保下载合法的鸿蒙组件。 |
--strict_ssl true |
启用严格的SSL证书验证,防止网络劫持或下载来源被篡改。 |
oh_modules
(依赖目录)缺失时,DevEco Studio会自动触发此命令,确保依赖完整。npm install
或yarn install
的作用,但针对鸿蒙生态的包管理。oh-package.json5
文件(如添加/删除依赖项),手动执行此命令可同步依赖。https://ohpm.openharmony.cn/ohpm/
)以确保依赖包与鸿蒙系统兼容。--strict_ssl true
的作用false
),但会降低安全性。npm
的区别ohpm
是鸿蒙专用的包管理器,与Node.js的npm
无直接关系。ohpm
管理,无法使用npm
替代。ERROR: ENOENT: no such file
)。https://ohpm.openharmony.cn
,尤其注意代理或防火墙设置。rm -rf ./oh_modules # 删除依赖目录
ohpm clean # 清理ohpm缓存
此命令是鸿蒙项目依赖管理的核心步骤,确保所有模块和工具链正确安装。
如果编译过程中出现依赖相关错误(如uv_cwd
或ENOENT
),优先尝试重新执行此命令并检查网络环境。
在鸿蒙(HarmonyOS/OpenHarmony)应用开发中,您提到的命令是用于调用 DevEco Studio 内置的 hvigor 工具来执行项目构建任务。以下是该命令的详细解析:
/Applications/DevEco-Studio.app/Contents/tools/node/bin/node
/Applications/DevEco-Studio.app/Contents/tools/hvigor/bin/hvigorw.js
--sync
-p product=default
--analyze=normal
--parallel
--incremental
--daemon
node
和 hvigorw.js
路径/Applications/DevEco-Studio.app/.../node
/Applications/DevEco-Studio.app/.../hvigorw.js
hvigor
是华为为鸿蒙开发定制的构建工具(类似 Android 的 Gradle),负责管理依赖、编译代码、打包资源等任务。参数 | 作用 |
---|---|
--sync |
同步项目配置,确保所有模块的依赖关系和配置(如 build-profile.json5 )一致。常用于首次拉取代码或修改依赖后。 |
-p product=default |
指定构建的 产品形态。default 表示使用默认配置(如调试模式),其他可能值如 release (发布模式)。 |
--analyze=normal |
启用构建过程分析,但仅输出常规日志(非详细)。若需调试,可改为 --analyze=verbose 。 |
--parallel |
启用多线程并行构建,加快大型项目的编译速度。 |
--incremental |
增量编译模式,仅编译修改过的文件,减少构建时间。但若缓存异常可能导致失败,需定期清理(如 hvigor clean )。 |
--daemon |
以守护进程模式运行 hvigor,首次启动稍慢,但后续构建会复用进程提升速度。 |
build-profile.json5
、oh-package.json5
等文件后,需执行 --sync
确保配置同步。--incremental
和 --parallel
加速构建,适合频繁修改代码的场景。--incremental
和 --daemon
进行全量编译,或添加 --debug
参数获取详细日志。/Applications/DevEco-Studio.app/.../hvigorw.js clean
/Applications/DevEco-Studio.app/.../hvigorw.js --stop
ENOENT
或 EACCES
)。--parallel --max-workers=2 # 限制为 2 个线程
--daemon
)。此命令是鸿蒙项目构建的核心步骤,通过 hvigor 工具实现:
--sync
)-p product=default
)--parallel
、--incremental
、--daemon
)若构建不稳定,可尝试以下操作:
4. 清理缓存:hvigor clean
5. 关闭增量编译:移除 --incremental
6. 查看详细日志:添加 --debug
参数。
工程在进行构建的时候遇到这个问题:Error: ENOENT: no such file or directory, uv_cwd
详细报错其实是在 node 里面,因此在网络上主要有以下几种解决方式
如果是在终端运行的话,可以重启终端,看是否解决
暴力终止所有 node 进程:killall node (本人用此方法解决问题)
重启电脑。还真别说,我觉得靠谱。跟上一种方法有异曲同工之妙。但如果你不想每次都重启,可能还是优先看看上面的方法吧
上面参考了其他博主的问题。