OpenHarmony设备直装hap脱离电脑hdc的两种实现思路 原创 精华

westinyang
发布于 2023-4-3 11:50
浏览
1收藏

关于作者:I’m westinyang

演示视频:https://www.bilibili.com/video/BV11k4y1i7Fh

序言

自 2023-02-27 日创建了 OpenHarmony开源应用社区 以来,目前已经做了3个开源应用和一些脚本文档类项目,一直想着未来做一个类似安卓世界F-Droid一样的自由开源软件应用仓库,把Gitee组织内的开源应用陆续添加进去,那为了实现这个小目标,首先要解决的问题肯定是如何在设备端实现直接安装hap,完全脱离电脑hdc命令。

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

设备信息

  • 一加6T
  • OpenHarmony 3.2.11.1 此固件由 @AlgoIdeas 移植并发布

实现思路1(官方接口)

  • 参考文档 应用开发文档 > 包管理 @ohos.bundle.installer (installer模块)
    • 安装应用 BundleInstaller.install
    • 卸载应用 BundleInstaller.uninstall
  • 需要注意的是,这个API需要 ohos.permission.INSTALL_BUNDLE 权限,权限等级为 system_core,所以我们要配置APL或者ACL方式修改应用的Profile,具体参考:应用开发文档 > 访问控制(权限)开发概述,可手动或自动签名,文档内都有详细说明
  • 重中之重,大坑来了,卸载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

实现思路2(另辟蹊径)

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

  • 开发一个shell命令服务放到系统内,用于操作bm/aa等本地shell命令去安装和打开应用,并提供http或其他协议的接口给上层应用调用 思路清奇哈哈
    • 参考文档:设备开发文档 > Shell命令开发指导 不一定非得参考这个,自己写一个命令行工具实现就行
    • 可以放到 /system/bin/ 目录
    • 挂载系统分区可读可写:mount -o remount,rw /
  • 添加一个引导启动配置,用于开机自动启动我们自己写的这个shell命令服务
    • 参考文档:设备开发文档 > init启动引导组件
    • 其实很简单,文档内有开发实例,就是一个简单的json配置文件
    • 参考上面的挂载系统分区可读可写命令,然后放到 /system/etc/init/ 目录
    • 然后重启系统,服务将自动启动
  • 至此,我们开发的应用只需要调用本机的一个接口,即可实现安装、卸载、打开应用等操作
  • 很明显这违背了OpenHarmony的访问控制权限机制,所以我称之为非常规手段 [手动狗头],并不推荐这么做

持续关注

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2024-1-18 11:46:22修改
5
收藏 1
回复
举报
4条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

厉害,期待细节分享

回复
2023-4-3 15:58:24
westinyang
westinyang 回复了 红叶亦知秋
厉害,期待细节分享

后续来了,我做了一个名为F-OH的OpenHarmony自由开源软件的应用中心

B站演示:​​https://www.bilibili.com/video/BV1dM411N7CG​

开源地址:​https://gitee.com/ohos-dev/f-oh

已于2023-4-27 13:32:27修改
回复
2023-4-12 11:47:50
面如惊雷上将军
面如惊雷上将军

大佬666!

回复
2023-4-17 18:07:44
qq640642ae963b8
qq640642ae963b8

好思路,思路2确实清新


1
回复
2023-4-26 00:58:46
回复
    相关推荐