搭建鸿蒙应用构建流水线
说在前头实在官网文档说的比力全,就搬运一下,只是增加一些文字便于各人明白,大多数都是署名问题,须要对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一下就下载好了
tar -xvf jdk-17.0.6_linux-x64_bin.tar.gz
配置Java情况变量
# Linux & MacOS
vi /etc/profile
#然后在最下面添加这两行,路径自己调整下
export JAVA_HOME=/opt/jdk-17.0.6_linux-x64_bin
export PATH=$PATH:$JAVA_HOME/bin
# :wq!后
source /etc/profile
# 验证
java -version
windows的话就不细说了,盘算机高级设置,情况变量,新建JAVA_HOME并配置文件,并把其bin目录添加到path中去
CLT 下载
https://developer.huawei.com/consumer/cn/download/
下载当前利用系统对应的CommandLineTools包,并解压到某个目录,建议解压到某个盘的根目录,由于遇到过同伴出现奇怪问题最后才刚发现是路径过长的原因。
# Linux:
cp ./commandline-tools-linux-x64-5.0.3.XXX.zip /home/ohos/commandline-tools-linux-x64-5.0.3.XXX.zip
cd /home/ohos/
unzip commandline-tools-linux-x64-5.0.3.XXX.zip
# 环境变量设置,不再赘述,路径调整下
export COMMANDLINE_TOOL_DIR=/home/ohos
export HDC_HOME=${COMMANDLINE_TOOL_DIR}/command-line-tools/sdk/HarmonyOS-NEXT-DB2/openharmony/toolchains
export PATH=$PATH:$HDC_HOME
export PATH=${COMMANDLINE_TOOL_DIR}/command-line-tools/bin:$PATH
# 验证
hvigorw -v
ohpm -v
配置堆栈所在
# 若您的工程在hvigor/hvigor-config.json5文件中依赖npm三方组件,流水线中则需要配置npm镜像地址,编译时才能正确地下载它。
npm config set registry=https://repo.huaweicloud.com/repository/npm/
npm config set @ohos:registry=https://repo.harmonyos.com/npm/
# 配置ohpm仓库地址
ohpm config set registry https://ohpm.openharmony.cn/ohpm/
ohpm config set strict_ssl false
构建
留意:是在daemon模式下,hvigorw会自动读取hvigor-config.json5文件中"nodeOptions"的配置;在非daemon模式下,须要修改node内存配置,可在hvigorw文件中取消第15行的注释,并配置对应的数值。如将node内存配置为10240,示例如下:
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情况编译结果划一。
// build-profile.json5文件
{
"name": "default",
"compatibleSdkVersion": "5.0.0(12)",
"targetSdkVersion": "5.0.0(12)",
"runtimeOS": "HarmonyOS",
"buildOption": {
"strictMode": {
"caseSensitiveCheck" : true
}
}
}
# 根据业务情况,执行相应的构建命令, 示例如下
# clean工程
hvigorw clean --no-daemon
# 构建Hap, 生成产物:${PROJECT_PATH}/{moduleName}/build/{productName}/outputs/{targetName}/xxx.hap
hvigorw assembleHap --mode module -p product=default -p buildMode=debug --no-daemon
# 构建Hsp, 生成产物:${PROJECT_PATH}/{moduleName}/build/{productName}/outputs/{targetName}/(xxx.har | xxx.hsp)
hvigorw assembleHsp --mode module -p module=library@default -p product=default --no-daemon
# 构建Har, 生成产物:${PROJECT_PATH}/{moduleName}/build/{productName}/outputs/{targetName}/outputs/xxx.har
hvigorw assembleHar --mode module -p module=library1@default -p product=default --no-daemon
# 构建App, 生成产物: ${PROJECT_PATH}/build/outputs/{productName}/xxx.app
hvigorw assembleApp --mode project -p product=default -p buildMode=debug --no-daemon
构建下令完成后,工程或模块下build目录中会天生相应的hap/hsp/har/app编译产物。
补充说明:
https://i-blog.csdnimg.cn/direct/cbaa385e661a42d2a66c538a0fe63e24.png附: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也署名下)
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的下令如下:
# 将打包好的hap包推送至设备中, 若有hsp也要send过去
hdc file send "{PROJECT_PATH}/entry/build/default/outputs/default/entry-default-signed.hap" "data/local/tmp/entry-default-signed.hap"
# 安装hap包,当然有hsp也要安装
hdc shell bm install -p "data/local/tmp/entry-default-signed.hap"
# 删除hap包,有hsp也清理下吧
hdc shell rm -rf "data/local/tmp/entry-default-signed.hap"
# 在设备上运行HAP的命令如下:(其实若有多个hap,一般一个Ability对应一个hap,运行程序那肯定就是运行EntryAbility)
hdc shell aa start -a EntryAbility -b com.example.myapplication -m entry
根据前面说的,hdc install xxx.app一定报错,由于app是上架应用商城用的包,并不能直接用于安装
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]