OpenHarmony开发者论坛
标题:
OpenHarmony设备直装hap脱离电脑hdc的两种实现思路
[打印本页]
作者:
westinyang
时间:
2023-10-27 10:00
标题:
OpenHarmony设备直装hap脱离电脑hdc的两种实现思路
[md]> 关于作者:[I'm westinyang](
https://kaihongpai.feishu.cn/wiki/CqWLwJRadibxztkrIWZcogWxnXd
)
> 演示视频:
https://www.bilibili.com/video/BV11k4y1i7Fh
# 实现思路1(官方接口)
- 参考文档 [应用开发文档 > 包管理 @ohos.bundle.installer (installer模块)](
http://docs.openharmony.cn/pages ... -apis-installer.md/
)
- 安装应用 BundleInstaller.install
- 卸载应用 BundleInstaller.uninstall
- 需要注意的是,这个API需要 `ohos.permission.INSTALL_BUNDLE` 权限,权限等级为 `system_core`,所以我们要配置APL或者ACL方式修改应用的Profile,具体参考:[应用开发文档 > 访问控制(权限)开发概述](
http://docs.openharmony.cn/pages ... stoken-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包的名字保持一致
- 打开应用:[使用显式Want启动Ability](
http://docs.openharmony.cn/pages ... h-explicit-want.md/
)
# 实现思路2(另辟蹊径)
> 实际上我是先想到的这个方法,因为当时没仔细看官方文档,忽略了有包管理API的存在,这种方式毕竟是非常规手段,如果有官方API可用当然还是首选官方API的
- 开发一个shell命令服务放到系统内,用于操作bm/aa等本地shell命令去安装和打开应用,并提供http或其他协议的接口给上层应用调用 `思路清奇哈哈`
- 参考文档:[设备开发文档 > Shell命令开发指导](
http://docs.openharmony.cn/pages ... bug-shell-guide.md/
) `不一定非得参考这个,自己写一个命令行工具实现就行`
- 可以放到 `/system/bin/` 目录
- 挂载系统分区可读可写:`mount -o remount,rw /`
- 添加一个引导启动配置,用于开机自动启动我们自己写的这个shell命令服务
- 参考文档:[设备开发文档 > init启动引导组件](
http://docs.openharmony.cn/pages ... s-boot-init-cfg.md/
)
- 其实很简单,文档内有开发实例,就是一个简单的json配置文件
- 参考上面的挂载系统分区可读可写命令,然后放到 `/system/etc/init/` 目录
- 然后重启系统,服务将自动启动
- 至此,我们开发的应用只需要调用本机的一个接口,即可实现安装、卸载、打开应用等操作
- **很明显这违背了OpenHarmony的访问控制权限机制,所以我称之为非常规手段 [手动狗头],并不推荐这么做**
# 持续关注
- 关于作者:[I'm westinyang](
https://kaihongpai.feishu.cn/wiki/CqWLwJRadibxztkrIWZcogWxnXd
)
- 哔哩哔哩:[个人主页](
https://space.bilibili.com/74433635
)
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5