问题
鸿蒙包的分发无法像安卓包那样仅提供一个apk文件的下载地址就可以安装。
一段时间以来,鸿蒙包安装仅依赖华为官方提供的工具链hdc,这需要鸿蒙设备借助数据线连接到能运行hdc命令的电脑,再使用命令行或者DevEco安装,安装过程过于繁琐,不方便内部测试。
解决方案
近期,华为官方新增了“内部测试”的Profile,用于内部测试阶段分发。
我们很容易可以发现,新增的“内部测试”类型区别于“发布”和“调试”类型,这其中必然有其原因。
这个新增的描述文件类型不禁让我联想到 iOS App 的Ad-hoc分发方式,仔细翻阅华为官方文档后印证了我的想法。这正是为方便内部测试设计的便捷安装方式,即用“内部测试”描述文件进行签名的App,通过相应的配置,可以实现测试人员在鸿蒙设备的浏览器打开一个网页点击安装即可下载安装。
操作文档见:
HarmonyOS应用内部测试
限制与流程
限制
- 内部测试版本有效期当前为90天,目前仅支持HarmonyOS 5.0.4(16)及以上系统版本。
- 内部测试可将应用分发到指定设备上,原理是利用设备UDID对设备进行授权,只有已授权设备才允许安装和使用应用。而AGC(AppGallery Connect)上每个账号可添加的设备数量为100,因此内部测试最多可安装到100台设备上。
- 当前HarmonyOS应用内部测试仅支持企业开发者,这里的企业开发者是区别于个人开发者而言的,而不是所谓的企业签账号(In-house)。
流程
“内部测试”分发的流程如下所示
包含申请发布证书、注册测试设备、申请内部测试Profile、配置签名信息、编译打包应用、上传应用包至服务器、生成应用描述并上传服务器、构造DeepLink等八个步骤。
前三个步骤需要在AGC上进行操作,可参考官方文档进行配置即可。后五个步骤以及需要注意的点我将下面列出,供大家参考。
- 配置签名信息
需要在签名配置中分别选择在AGC上申请“内部测试”的Profile文件(.p7b)和发布证书文件(.cer)。
- 在product设置中选择Build Mode为release并Apply,再build出hap包。
- 需要将编译得到的各个hap包、icon、以及对应的manifest.json5上传至服务器或第三方云上,下载URL必须以“https”开头。
- manifest.json5文件中packageHash的值用于验证hap包的完整性。MAC上需要通过shasum工具生成:shasum -a 256 [path-to-hap];Windows系统下可通过certutil -hashfile [path-to-hap] SHA256命令获取。
- manifest.json5文件中sign的值用于校验描述文件签名。需要使用internal-testing工具获取,该工具提供了.bat文件可以直接在Windows系统设备的终端中运行:
- manifest-sign.bat -operation sign -mode localjks -inputFile D:\old.json5 -outputFile D:\new.json5 -keystore D:\enterprise.p12 -keystorepasswd 123456 -keyaliaspasswd 123456 -privatekey enterprise
复制代码 在Mac系统中,需要在终端运行如下命令:- java -jar ./manifest-sign-tool-1.0.0.jar -operation sign -mode localjks -inputFile ./old_manifest.json5 -outputFile ./manifest.json5 -keystore sign/cxy.p12 -keystorepasswd xxx -keyaliaspasswd xxx -privatekey xxx
复制代码
- 配置完json5文件后,我们还需要验证签名,以免安装时报错,这里同样需要用到internal-testing工具,其对应参数如下。
- -operation verify -inputFile D:\new.json5 -keystore D:\enterprise.p12 -keystorepasswd 123456
复制代码 运行后如提示“verify success”则说明验签成功,可以使用。
- 如何生成"https"开头的下载URL呢?我们可以将对应的app.hap、icon.png、manifest.json5以及下载引导页面index.html文件上传到CDN服务器上,这样就满足要求啦。
效果如下图所示:
生成一个加载html文件URL的二维码,就可以实现内部测试分发啦
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |