搭建鸿蒙应用构建流水线

打印 上一主题 下一主题

主题 1026|帖子 1026|积分 3078

说在前头

实在官网文档说的比力全,就搬运一下,只是增加一些文字便于各人明白,大多数都是署名问题,须要对hsp和hap都署名,hdc send的时候都send已往,install的时候也都install一下
明白几个概念


  • har,hap,hsp,app的区别
    本文须要知道的是,能像安卓那样直接安装到手机的只有hap,app包则是商城上架的概念,并不能直接安装到手机。感爱好可以用解压缩工具(如Bandizip)打开.app文件,可以看到内里除了pack.info,另有至少一个hap包(大概另有其它hsp等)
  • 证书种类
    发布证书:一个开发者只有一个发布证书,同一个开发者,多个项目多个App发布时均使用同一个发布证书。
    调试证书:调试证书,必须选择分发装备范例(手机?平板?手表?),和包罗调试装备的uuid
  • 用到的工具
    ohpm:主要用于安装工程及各个模块依赖的三方库。
    hvigor:构建产物,支持Hap,Hsp,Har,App,构建完不带有署名信息。
    java:只支持jdk17,用于实行署名工具
    hap-sign-tool.jar:署名工具,不单支持hap署名,还支持hsp署名
    hdc:将HAP推送到真机装备上举行安装,须要留意的是,推送的HAP必须是携带署名信息(必须是调试证书)的,否则会导致HAP安装失败。留意:若有hsp也要一块推到真机再安装。大概有朋友用发布证书来署名,发布证书打包的hap包是不能用于直接安装的
根据1、3可以知道,实在咱们署名都是对hap,hsp署名,app可以明白为一个包罗所有hap和hsp的一个压缩包(实在另有pack.info等文件)
官网文档

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-command-line-building-app-0000001672412437-V5
Step by Step

JDK17 下载

这个自己下载,由于有的同伴会用定制化的jdk,没特殊情况baidu或google一下就下载好了
  1. tar -xvf jdk-17.0.6_linux-x64_bin.tar.gz
复制代码
配置Java情况变量

  1. # Linux & MacOS
  2. vi /etc/profile
  3. #然后在最下面添加这两行,路径自己调整下
  4. export JAVA_HOME=/opt/jdk-17.0.6_linux-x64_bin
  5. export PATH=$PATH:$JAVA_HOME/bin
  6. # :wq!后
  7. source /etc/profile
  8. # 验证
  9. java -version
复制代码
windows的话就不细说了,盘算机高级设置,情况变量,新建JAVA_HOME并配置文件,并把其bin目录添加到path中去
CLT 下载

https://developer.huawei.com/consumer/cn/download/
下载当前利用系统对应的CommandLineTools包,并解压到某个目录,建议解压到某个盘的根目录,由于遇到过同伴出现奇怪问题最后才刚发现是路径过长的原因。
  1. # Linux:
  2. cp ./commandline-tools-linux-x64-5.0.3.XXX.zip /home/ohos/commandline-tools-linux-x64-5.0.3.XXX.zip
  3. cd /home/ohos/
  4. unzip commandline-tools-linux-x64-5.0.3.XXX.zip
  5. # 环境变量设置,不再赘述,路径调整下
  6. export COMMANDLINE_TOOL_DIR=/home/ohos
  7. export HDC_HOME=${COMMANDLINE_TOOL_DIR}/command-line-tools/sdk/HarmonyOS-NEXT-DB2/openharmony/toolchains
  8. export PATH=$PATH:$HDC_HOME
  9. export PATH=${COMMANDLINE_TOOL_DIR}/command-line-tools/bin:$PATH
  10. # 验证
  11. hvigorw -v
  12. ohpm -v
复制代码
配置堆栈所在

  1. # 若您的工程在hvigor/hvigor-config.json5文件中依赖npm三方组件,流水线中则需要配置npm镜像地址,编译时才能正确地下载它。
  2. npm config set registry=https://repo.huaweicloud.com/repository/npm/
  3. npm config set @ohos:registry=https://repo.harmonyos.com/npm/
  4. # 配置ohpm仓库地址
  5. ohpm config set registry https://ohpm.openharmony.cn/ohpm/
  6. ohpm config set strict_ssl false
复制代码
构建

留意:是在daemon模式下,hvigorw会自动读取hvigor-config.json5文件中"nodeOptions"的配置;在非daemon模式下,须要修改node内存配置,可在hvigorw文件中取消第15行的注释,并配置对应的数值。如将node内存配置为10240,示例如下:
  1. NODE_OPTS="--max-old-space-size=10240"
复制代码
本文使用Linux作为流水线构建情况,Linux情况会对大小写敏感,如果您的代码引用中有大小写错误(例如代码中import funcA form ‘./aaa’,而现实文件为AAA.ets),而且开发情况是Windows或者Mac,那么有大概出现Windows或者Mac情况下编译通过,而Linux情况下编译不通过的征象。通过在项目级的build-profile.json5文件中配置caseSensitiveCheck为true来打开大小写敏感,保持Windows或者Mac情况编译与Linux情况编译结果划一。
  1. // build-profile.json5文件
  2. {
  3.     "name": "default",
  4.     "compatibleSdkVersion": "5.0.0(12)",
  5.     "targetSdkVersion": "5.0.0(12)",
  6.     "runtimeOS": "HarmonyOS",
  7.     "buildOption": {
  8.       "strictMode": {
  9.         "caseSensitiveCheck" : true
  10.       }
  11.     }
  12. }
复制代码
  1. # 根据业务情况,执行相应的构建命令, 示例如下
  2. # clean工程
  3. hvigorw clean --no-daemon
  4. # 构建Hap, 生成产物:${PROJECT_PATH}/{moduleName}/build/{productName}/outputs/{targetName}/xxx.hap
  5. hvigorw assembleHap --mode module -p product=default -p buildMode=debug --no-daemon
  6. # 构建Hsp, 生成产物:${PROJECT_PATH}/{moduleName}/build/{productName}/outputs/{targetName}/(xxx.har | xxx.hsp)
  7. hvigorw assembleHsp --mode module -p module=library@default -p product=default --no-daemon
  8. # 构建Har, 生成产物:${PROJECT_PATH}/{moduleName}/build/{productName}/outputs/{targetName}/outputs/xxx.har
  9. hvigorw assembleHar --mode module -p module=library1@default -p product=default --no-daemon
  10. # 构建App, 生成产物: ${PROJECT_PATH}/build/outputs/{productName}/xxx.app
  11. hvigorw assembleApp --mode project -p product=default -p buildMode=debug --no-daemon
复制代码
构建下令完成后,工程或模块下build目录中会天生相应的hap/hsp/har/app编译产物。
补充说明:
附:hvigor下令行参数详见:常用下令。
搞到调试证书文件

参考https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-signing-0000001587684945-V5#section15151840123413
署名

须要用到hap_sign_tool.jar,在${COMMANDLINE_TOOL_DIR}/command-line-tools/sdk/HarmonyOS-NEXT-DB1/openharmony/toolchains/lib下
使用如下下令对HAP举行署名。详细的署名工具指导请参考Hap包署名工具。(这里留意下,有hsp也署名下)
  1. java -jar hap-sign-tool.jar sign-app -keyAlias "key0" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "test.cer" -profileFile "test.p7b" -inFile "hap-unsigned.hap" -keystoreFile "test.p12" -outFile "result\hap-signed.hap" -keyPwd "123456" -keystorePwd "123456" -signCode "1"
复制代码
关于该下令中须要修改的参数说明如下,其余参数不须要修改:


  • keyAlias:密钥别名。
  • appCertFile:申请的调试证书文件,格式为.cer。
  • profileFile:申请的调试Profile文件,格式为.p7b。
  • inFile:通过hvigor打包天生的未携带署名信息的HAP。
  • keystoreFile:密钥库文件,格式为.p12。
  • outFile:经过署名后天生的携带署名信息的HAP。
  • keyPwd:密钥口令。
  • keystorePwd:密钥库口令。
  • signCode:是否开启代码署名,缺省为开启。1表示开启,0表示不开启。从NEXT Developer Beta2版本开始,需开启代码署名,否则将导致构建出的包无法安装到装备上。
运行应用

通过HDC工具将HAP推送到真机装备上举行安装,须要留意的是,推送的HAP必须是携带署名信息的,否则会导致HAP安装失败。
推送HAP的下令如下:
  1. # 将打包好的hap包推送至设备中, 若有hsp也要send过去
  2. hdc file send "{PROJECT_PATH}/entry/build/default/outputs/default/entry-default-signed.hap" "data/local/tmp/entry-default-signed.hap"
  3. # 安装hap包,当然有hsp也要安装
  4. hdc shell bm install -p "data/local/tmp/entry-default-signed.hap"
  5. # 删除hap包,有hsp也清理下吧
  6. hdc shell rm -rf "data/local/tmp/entry-default-signed.hap"
  7. # 在设备上运行HAP的命令如下:(其实若有多个hap,一般一个Ability对应一个hap,运行程序那肯定就是运行EntryAbility)
  8. hdc shell aa start -a EntryAbility -b com.example.myapplication -m entry
复制代码
根据前面说的,hdc install xxx.app一定报错,由于app是上架应用商城用的包,并不能直接用于安装

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大号在练葵花宝典

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表