曾静的博客

但行好事,莫问前程.

嗨,我是曾静 (@devzeng),目前暂居深圳。


这是我用来记录平日学习笔记的地方,欢迎您的访问.

HarmonyOS NEXT HAP安装工具

HarmonyOS NEXT 上的产物有 APP/HAP 两种,其中 APP 上架使用,HAP 用于非上架的场景(企业内部分发和调试包)。

  • APP 仅用于提交上架,不可以直接安装,只能通过AppStore下载

  • HAP 非上架发布的场景,可以本地安装,如果是企业发布的应用release模式下的hap无法直接安装

agc

在实际项目中日常提测不可能每次都让开发直接给测试的机器build安装一下,还是需要提供安装包来使用。

可以通过 Command Line Tools for HarmonyOS + jenkins 做自动化任务,生成hap。

hvigorw assembleHap --mode module -p product=default -p buildMode=debug --no-daemon

生成的产物路径:${PROJECT_PATH}/{moduleName}/build/{productName}/outputs/{targetName}/xxx.hap 将 HAP 拷出来用 DevEco Testing 安装就好了。

deveco-testing.png

说明:DevEco Testing 需要使用开发者账号登录才能使用

使用命令行:

hdc file send "entry-default-signed.hap" "data/local/tmp/entry-default-signed.hap"
hdc shell bm install -p "data/local/tmp/entry-default-signed.hap"

如果项目中包含HSP动态库,需要每个模块构建生成HSP

hvigorw assembleHsp --mode module -p module=library@default -p product=default --no-daemon

生成的产物路径:${PROJECT_PATH}/{moduleName}/build/{productName}/outputs/{targetName}/xxx.hsp

将生成的hap/hsp拷贝出来,压缩成zip使用 DevEco Testing 安装。当然可以使用命令:

remote_path="data/local/tmp/8be7b3fc662b4b8a9d91f52d39632989"
hdc shell mkdir "${remote_path}"

for file in $dir_path/*
do
  if [ -f "$file" ]; then
    echo "hdc file send $file ${remote_path}"
    hdc file send $file "${remote_path}"
  fi
done

hdc shell bm install -p "${remote_path}"

hdc shell rm -rf "${remote_path}"

Command Line Tools 大约2G左右,下载起来也是比较费劲,其实只用到了hdc这个命令,想着能不能只把hdc提取出来,没想到竟然可以(研究了一下DevEco Testing其实也是用的简化的hdc命令)。项目源码地址:https://github.com/hhtczengjing/hdc_cli.git

当然命令行还是有点麻烦,初步实现了一个GUI可视化的工具,支持拖动zip包直接安装到手机上面,项目地址: https://github.com/hhtczengjing/hap_installer.git

参考资料

最近的文章

VSCode搭建CocoaPods调试环境

以前一直使用的是 RubyMine 调试 CocoaPods 和开发 CocoaPods 插件,近期切换电脑发现配置不成功,而且因为一些原因在公司的设备上面不允许使用 RubyMine (平时也是比较少使用),索性考虑切换到VSCode上面吧。这里记录一下配置的过程。 本文使用的设备环境:macOS 15.1.1, Apple M系列芯片使用RVM安装Ruby系统自带的 Ruby 环境是 2.6:ruby 2.6.10p210 (2022-04-12 revision 67958) [u...…

Note继续阅读
更早的文章

使用脚本批量更新iOS开发需要的描述文件

每年到了开发证书过期的时候都需要手动一个个的更新项目的描述文件(mobileprovision),刚开始一两个手动操作一下几分钟也就完事了,如果几十个要一个个的手动去操作就太浪费时间了。有的时候还要补充添加一些新设备进来,又要重复执行一次,随便弄一下一上午就过去了。在之前公司项目中是使用fastlane match进行证书管理的,做法是使用 fastlane 生成证书描述文件,然后提交到git仓库里面。使用的时候只要指定仓库和identifier就可以自动搞定(参考下面的官方示例代码配置)...…

Note继续阅读