鸿蒙上实现直接安装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  

iPhone8什么时候上市?iPhone8最新消息:iPhone8功能逆天,iPhone8六大猜想抢先看干货来袭
详解RFID项目实施流程
将来能不能冲着 Google Home 喊“Hey,Siri”?
科普激光驱动白光光源(LDLS)
立体声编码器原理图
鸿蒙上实现直接安装hap
2030年,中国能否成为人工智能的世界领导者?
富士通FRAM是断电情况下也能保留数据非易失性的存储器
氧化锌避雷器测试仪的使用方法
详细讲解USB3.0 Micro-B接口连接器知识!
明纬电源——30W可信赖的绿色医疗型电源供应器(RPS-30系列)
Xilinx Vivado 2015.3 运用 IP子系统将设计提升至新高
谷歌大神Jeff Dean:谷歌翻译API付费服务已获利
友坚科技UT_V210CV04核心板简介
反射传感器简化光电开关设计
回到未来,我们可以看见的绿色5G
基于SPCE061A的通用示波器存储功能扩展设计
威频科技获2000万元A++轮融资
Pioneer开发3D LiDAR系统,携手NVIDIA促进自驾车的实现
高频逆变器是什么,它都有哪些特性