HarmonyOS 鸿蒙开发DevEco Studio OpenHarmony:通过命令行方式构建应用或服务

目录

准备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

  1. 下载JDK,只支持JDK 11版本。
  2. 进入JDK软件包目录,执行如下命令,解压已经下载好的安装包,其中jdk_x64_linux_11.0.13_8.tar.gz为软件包名称,请根据实际进行修改。
    
    
    1. tar -xvf jdk_x64_linux_11.0.13_8.tar.gz
  3. 配置JDK环境变量。
    1. 执行如下命令,打开当前用户下的配置文件.bashrc。
      
      
      1. vim ~/.bashrc
    2. 在配置文件中,添加JDK的环境变量信息,文件目录和软件包名称请根据实际情况进行修改。
      
      
      1. #jdk
      2. export JAVA_HOME=/opt/jdk11.0.13_8
      3. export PATH=$PATH:$JAVA_HOME/bin
  4. 执行source命令使配置文件立即生效。
    
    
    1. source ~/.bashrc
  5. 执行如下命令,检查JDK安装结果。
    
    
    1. java -version

安装node.js

  1. 访问Node.js官方网站
    ,下载Node.js,版本为v14.19.1及以上,且只支持14系列版本。
  2. 进入Node.js软件包目录,执行如下命令,解压已经下载好的安装包,其中node-v14.19.1-linux-x64.tar.xz为软件包名称,请根据实际进行修改。
    
    
    1. tar -xvf node-v14.19.1-linux-x64.tar.xz
  3. 配置Node.js环境变量。
    1. 执行如下命令,打开当前用户下的配置文件.bashrc。
      
      
      1. vim ~/.bashrc
    2. 在配置文件中,添加Node.js的环境变量信息,文件目录和软件包名称请根据实际情况进行修改。
      
      
      1. #nodejs
      2. export NODE_HOME=/opt/node-v14.19.1-linux-x64/bin
      3. export PATH=$NODE_HOME:$PATH
  4. 执行source命令使配置文件立即生效。
    
    
    1. source ~/.bashrc
  5. 执行如下命令,查询Node.js版本信息,确认安装成功。
    
    
    1. node -v

下载OpenHarmony SDK

通过ohsdkmgr命令行工具来统一下载和管理OpenHarmony SDK。

  1. 下载OpenHarmony SDK命令行工具
    :ohcommandlinetools-linux-tool-1.0.0.100.zip。
  2. 执行如下命令,解压命令行工具,工具名称请根据实际情况进行修改。
    
    
    1. unzip ohcommandlinetools-linux-tool-1.0.0.100.zip
  3. 执行如下命令,打开SDK工具配置文件config.properties,并设置OpenHarmony SDK存储路径,请注意,指定路径时请使用绝对路径。

    说明

    OpenHarmony SDK存储目录请提前创建好,并为当前用户赋予写权限。

    
    
    1. vim oh-command-line-tools/ohsdkmanager/conf/config.properties

  4. 进入到oh-command-line-tools/ohsdkmanager/bin下,安装OpenHarmony SDK。例如,同时安装eTS和JS API 8的SDK、toolchains。关于ohsdkmgr的详细命令说明,请参考命令行工具使用说明
    
    
    1. ./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工具链。
  1. 执行如下命令,打开当前用户下的配置文件.bashrc。
    
    
    1. vim ~/.bashrc
  2. 在配置文件中,添加hdc_std工具、OpenHarmony SDK环境变量信息,文件目录和软件包名称请根据实际情况进行修改。
    
    
    1. #hdc_std工具环境变量
    2. export PATH=/home/ohos/OpenHarmony/SDK/toolchains:$PATH
    3. #OpenHarmony SDK环境变量
    4. export OHOS_SDK_HOME=/home/ohos/OpenHarmony/SDK
  3. 执行source命令使配置文件立即生效。
    
    
    1. source ~/.bashrc

设置OpenHarmony npm仓

OpenHarmony npm三方共享包,需要从指定的npm仓中进行下载,在执行编译构建任务前,请执行如下命令设置OpenHarmony npm共享仓地址。


  1. 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脚本的方式来进行构建。

  1. 在工程的package.json的scripts中,定义构建任务脚本。其中任务名称buildOhosApp可以自定义,调用的构建任务hvigor assembleApp保持不变。
    
    
    1. "scripts": {
    2. "buildOhosApp": "hvigor assembleApp"
    3. },
  2. 在工程的根目录节点下,执行npm install命令安装工程的依赖。
    
    
    1. npm install
  3. 在工程的根目录节点下,执行如下命令运行上述步骤中定义的构建任务。
    
    
    1. 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脚本的方式来进行构建。

  1. 在工程的package.json的scripts中,定义构建任务脚本。其中任务名称buildOhosHaps可以自定义,调用的构建任务hvigor assembleHap保持不变。
    
    
    1. "scripts": {
    2. "buildOhosHaps": "hvigor assembleHap"
    3. },
  2. 在工程的根目录节点下,执行npm install命令安装工程的依赖。
    
    
    1. npm install
  3. 在工程的根目录节点下,执行如下命令运行上述步骤中定义的构建任务。
    
    
    1. 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目录下获取。


  1. 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包的命令如下:
    
    
    1. hdc_std install signed_openharmony-demo.hap
  • 推送多个HAP包的命令如下:
    
    
    1. hdc_std install xxx01.hap xxx02.hap xxx03.hap