鸿蒙上实现直接安装hap

描述

自创建了 OpenHarmony开源应用社区以来,目前已经做了 3 个开源应用和一些脚本文档类项目,一直想着未来做一个类似安卓世界 F-Droid 一样的自由开源软件应用仓库,把 Gitee 组织内的开源应用陆续添加进去。

那为了实现这个小目标,首先要解决的问题肯定是如何在设备端实现直接安装 hap,完全脱离电脑 hdc 命令。

效果如下:

关于这个问题,现阶段网上可能搜不到什么特别有价值的信息,那只能自己探索了,经过几天的研究和尝试,目前给出以下两种实现思路,希望能帮助到大家~

设备信息

一加 6T

OpenHarmony 3.2.11.1(此固件由 @AlgoIdeas 移植并发布)

实现思路 1(官方接口)

参考文档:应用开发文档 > 包管理 @ohos.bundle.installer (installer 模块)

 

http://docs.openharmony.cn/pages/v3.2Beta/zh-cn/application-dev/reference/apis/js-apis-installer.md/

 

安装应用:

 

BundleInstaller.install

 

卸载应用:

 

BundleInstaller.uninstall

 

需要注意的是,这个 API 需要 ohos.permission.INSTALL_BUNDLE 权限,权限等级为 system_core,所以我们要配置 APL 或者 ACL 方式修改应用的Profile。

具体参考:应用开发文档 > 访问控制(权限)开发概述,可手动或自动签名,文档内都有详细说明。

 

http://docs.openharmony.cn/pages/v3.2Beta/zh-cn/application-dev/security/accesstoken-overview.md/
重中之重,大坑来了,卸载 API 的调用很顺利,但安装始终报 17700012 错误码(hap 路径有问题),一度怀疑官方文档写的不够准确,中间的折腾就不再细说了。 最终和其他小伙伴的探讨和尝试下,终于搞定了,只要按照以下三点说明,肯定可以,这三点绝对比官方文档靠谱。 ①hap 包要放到 /data/app/el2/100/base/ 你的应用包名 /haps/entry/files/ ②但是,hapFilePaths前缀要写: (谜之操作)
/data/storage/el2/base/haps/entry/files/
③并且,hapFilePaths 需要写上文件名,并且必须和步骤 1 中 hap 包的名字保持一致。

 

至于如何打开应用,暂时还没继续研究,知道的小伙伴们可以在评论区展示一下。

实现思路 2(另辟蹊径)

实际上我是先想到的这个方法,因为当时没仔细看官方文档,忽略了有包管理 API 的存在,这种方式毕竟是非常规手段,如果有官方 API 可用当然还是首选官方 API 的。

开发一个 shell 命令服务放到系统内,用于操作 bm/aa 等本地 shell 命令去安装和打开应用,并提供 http 或其他协议的接口给上层应用调用,思路清奇哈哈。

参考文档:设备开发文档 > Shell命令开发指导贴

 

http://docs.openharmony.cn/pages/v3.2Beta/zh-cn/device-dev/kernel/kernel-small-debug-shell-guide.md/

 

不一定非得参考这个,自己写一个命令行工具实现就行。

可以放到 /system/bin/ 目录,挂载系统分区可读可写:

 

mount -o remount,rw /
添加一个引导启动配置,用于开机自动启动我们自己写的这个 shell 命令服务。

 

参考文档:设备开发文档 > init启动引导组件

 

http://docs.openharmony.cn/pages/v3.2Beta/zh-cn/device-dev/subsystems/subsys-boot-init-cfg.md/
其实很简单,文档内有开发实例,就是一个简单的 json 配置文件。 参考上面的挂载系统分区可读可写命令,然后放到 /system/etc/init/ 目录,然后重启系统,服务将自动启动。 至此,我们开发的应用只需要调用本机的一个接口,即可实现安装、卸载、打开应用等操作。 很明显这违背了 OpenHarmony 的访问控制权限机制,所以我称之为非常规手段,并不推荐这么做。

 

感兴趣的小伙伴们,可以关注 OpenHarmony 开源应用社区:

 

https://gitee.com/ohos-dev

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分