目录
准备HAP/APP构建环境
安装JDK
安装node.js
下载OpenHarmony SDK
配置环境变量
设置OpenHarmony npm仓
构建应用或服务
构建APP
构建HAP
将APP拆分为HAP
对HAP进行签名
在真机设备中安装HAP
除了使用DevEco Studio一键式构建OpenHarmony应用或原子化服务(简称应用或服务)外,还可以使用命令行工具来调用Hvigor任务进行构建。通过命令行的方式构建应用或服务,可用于构筑CI(Continuous Integration)持续集成流水线,按照计划时间自动化的构建HAP、APP、签名、安装部署等操作,降低开发者负担。
通过命令行方式构建应用或服务,可在Windows、Ubuntu和macOS下调用相应命令来执行,本文将以Ubuntu系统为例进行讲解,包括准备构建环境、构建HAP、构建APP、签名等操作。Windows和macOS系统,仅在搭建构建环境上存在差异,其余调用的命令行任务与Ubuntu系统没有区别。
下表是命令行构建OpenHarmony应用或服务依赖的工具版本配套表信息。
工具 |
版本要求 |
---|---|
JDK |
JDK 11 |
Node.js |
v14.19.1及以上,且只支持14系列版本 |
Hvigor |
1.0.6及以上 |
编译构建插件 |
1.0.6及以上 |
ohsdkmgr |
1.0.0.100及以上 |
准备HAP/APP构建环境
安装JDK
- 下载JDK,只支持JDK 11版本。
- 进入JDK软件包目录,执行如下命令,解压已经下载好的安装包,其中jdk_x64_linux_11.0.13_8.tar.gz为软件包名称,请根据实际进行修改。
- tar -xvf jdk_x64_linux_11.0.13_8.tar.gz
- 配置JDK环境变量。
- 执行如下命令,打开当前用户下的配置文件.bashrc。
- vim ~/.bashrc
- 在配置文件中,添加JDK的环境变量信息,文件目录和软件包名称请根据实际情况进行修改。
- #jdk
- export JAVA_HOME=/opt/jdk11.0.13_8
- export PATH=$PATH:$JAVA_HOME/bin
- 执行如下命令,打开当前用户下的配置文件.bashrc。
- 执行source命令使配置文件立即生效。
- source ~/.bashrc
- 执行如下命令,检查JDK安装结果。
- java -version
安装node.js
- 访问Node.js官方网站
,下载Node.js,版本为v14.19.1及以上,且只支持14系列版本。 - 进入Node.js软件包目录,执行如下命令,解压已经下载好的安装包,其中node-v14.19.1-linux-x64.tar.xz为软件包名称,请根据实际进行修改。
- tar -xvf node-v14.19.1-linux-x64.tar.xz
- 配置Node.js环境变量。
- 执行如下命令,打开当前用户下的配置文件.bashrc。
- vim ~/.bashrc
- 在配置文件中,添加Node.js的环境变量信息,文件目录和软件包名称请根据实际情况进行修改。
- #nodejs
- export NODE_HOME=/opt/node-v14.19.1-linux-x64/bin
- export PATH=$NODE_HOME:$PATH
- 执行如下命令,打开当前用户下的配置文件.bashrc。
- 执行source命令使配置文件立即生效。
- source ~/.bashrc
- 执行如下命令,查询Node.js版本信息,确认安装成功。
- node -v
下载OpenHarmony SDK
通过ohsdkmgr命令行工具来统一下载和管理OpenHarmony SDK。
- 下载OpenHarmony SDK命令行工具
:ohcommandlinetools-linux-tool-1.0.0.100.zip。 - 执行如下命令,解压命令行工具,工具名称请根据实际情况进行修改。
- unzip ohcommandlinetools-linux-tool-1.0.0.100.zip
- 执行如下命令,打开SDK工具配置文件config.properties,并设置OpenHarmony SDK存储路径,请注意,指定路径时请使用绝对路径。
说明
OpenHarmony SDK存储目录请提前创建好,并为当前用户赋予写权限。
- vim oh-command-line-tools/ohsdkmanager/conf/config.properties
- 进入到oh-command-line-tools/ohsdkmanager/bin下,安装OpenHarmony SDK。例如,同时安装eTS和JS API 8的SDK、toolchains。关于ohsdkmgr的详细命令说明,请参考命令行工具使用说明
。- ./ohsdkmgr install ets:8 js:8 toolchains --accept-license
配置环境变量
配置hdc_std命令行工具和OpenHarmony SDK以及的环境变量信息。其中:
- hdc_std命令行工具用于OpenHarmony应用/服务调试所需的工具,该工具存放在SDK的toolchains目录中。为方便使用hdc_std命令行工具,请将其添加到环境变量中。
- OpenHarmony SDK中包含eTS、JS和Native SDK,以及toolchains工具链。
- 执行如下命令,打开当前用户下的配置文件.bashrc。
- vim ~/.bashrc
- 在配置文件中,添加hdc_std工具、OpenHarmony SDK环境变量信息,文件目录和软件包名称请根据实际情况进行修改。
- #hdc_std工具环境变量
- export PATH=/home/ohos/OpenHarmony/SDK/toolchains:$PATH
- #OpenHarmony SDK环境变量
- export OHOS_SDK_HOME=/home/ohos/OpenHarmony/SDK
- 执行source命令使配置文件立即生效。
- source ~/.bashrc
设置OpenHarmony npm仓
OpenHarmony npm三方共享包,需要从指定的npm仓中进行下载,在执行编译构建任务前,请执行如下命令设置OpenHarmony npm共享仓地址。
- npm config set @ohos:registry=https://repo.harmonyos.com/npm/
构建应用或服务
通过命令行工具可以构建出HAP或APP包,用于应用或服务的测试、验证等。
如下图所示,一般通过CI流水线构建生成不带签名信息的APP,然后通过命令行工具将该APP包拆分为HAP并对HAP进行签名(调试签名),最后将签名后的HAP包部署到设备上进行测试。
当然,您也可以直接构建HAP包,然后再使用命令行工具对HAP包进行签名后,将签名后的HAP包部署到设备上进行测试。
构建APP
使用命令行方式构建APP,构建方式遵循npm规范,可以在package.json中定义npm运行脚本,然后再运行npm脚本的方式来进行构建。
- 在工程的package.json的scripts中,定义构建任务脚本。其中任务名称buildOhosApp可以自定义,调用的构建任务hvigor assembleApp保持不变。
- "scripts": {
- "buildOhosApp": "hvigor assembleApp"
- },
- 在工程的根目录节点下,执行npm install命令安装工程的依赖。
- npm install
- 在工程的根目录节点下,执行如下命令运行上述步骤中定义的构建任务。
- npm run buildOhosApp
说明
如果执行构建任务命令提示“node_modules/.bin/hvigor:Permission denied”权限受限,则需要进入到工程的node_modules/.bin/目录下,执行chmod u+x ./hvigor命令,为hvigor工具赋权。
等待任务执行完毕后,可以在工程的build/outputs/default目录下获取构建的APP包。
构建HAP
使用命令行方式构建HAP,其构建方式与构建APP一样,可以在package.json中定义npm运行脚本,然后再运行npm脚本的方式来进行构建。
- 在工程的package.json的scripts中,定义构建任务脚本。其中任务名称buildOhosHaps可以自定义,调用的构建任务hvigor assembleHap保持不变。
- "scripts": {
- "buildOhosHaps": "hvigor assembleHap"
- },
- 在工程的根目录节点下,执行npm install命令安装工程的依赖。
- npm install
- 在工程的根目录节点下,执行如下命令运行上述步骤中定义的构建任务。
- npm run buildOhosHaps
说明
如果执行构建任务命令提示“node_modules/.bin/hvigor:Permission denied”权限受限,则需要进入到工程的node_modules/.bin/目录下,执行chmod u+x ./hvigor命令,为hvigor工具赋权。
等待任务执行完毕后,可以在各模块下的build/default/outputs/default目录下获取构建的HAP包。
将APP拆分为HAP
将APP(带签名信息和不带签名信息APP均可)拆包为HAP,需要使用APP拆包工具app_unpacking_tool.jar进行拆包,该工具可在下载的OpenHarmony SDK路径下的toolchains{版本号}lib目录下获取。
- java -jar 'home/ohos/OpenHarmony/SDK/toolchains/3.1.5.5/bin/app_unpacking_tool.jar' --mode app --app-path 'home/ohos/OpenHarmony/APP/openharmony-demo-unsigned.app' --out-path 'home/ohos/OpenHarmony/HAP' --force true --unpackapk false
关于该命令中需要修改的参数说明如下,其余参数不需要修改:
- jar:指定APP拆包工具的路径。
- app-path:指定需要拆分的APP包。
- out-path:指定HAP包存储路径,该路径不能与APP包存放路径相同。
- force:取值为true,表示强制删除输出文件夹以及文件夹中的文件;如果取值为false,则指定的输出目录不能提前创建好,否则会出现错误。
对HAP进行签名
在真机设备上运行HAP,需要使用hap-sign-tool.jar命令行工具对HAP进行签名,该工具可以在OpenHarmony SDK路径下的toolchains{版本号}lib目录下获取。
关于如何使用命令行工具对HAP进行签名的指导请参考HAP包签名工具指导
。
在真机设备中安装HAP
通过hdc_std工具将HAP包推送到真机设备上进行安装,需要注意的是,推送的HAP包必须是携带签名信息的,否则会导致HAP安装失败。
- 推送单个HAP包的命令如下:
- hdc_std install signed_openharmony-demo.hap
- 推送多个HAP包的命令如下:
- hdc_std install xxx01.hap xxx02.hap xxx03.hap