0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙上实现直接安装hap

OpenHarmony威廉希尔官方网站 社区 来源: OpenHarmony威廉希尔官方网站 社区 2023-04-11 19:06 次阅读

自创建了 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-oremount,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

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

    关注

    3

    文章

    3368

    浏览量

    42564
  • 鸿蒙
    +关注

    关注

    57

    文章

    2368

    浏览量

    42896
  • OpenHarmony
    +关注

    关注

    25

    文章

    3727

    浏览量

    16388

原文标题:鸿蒙上实现直接安装hap

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony威廉希尔官方网站 社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    编写HAP应用及开发板上调试端到端指南

    ,./bm install -p test.hap安装HAP鸿蒙系统中,test.hap是你的HAP
    发表于 09-21 14:51

    转发:鸿蒙HI3516-HAP的编译打包和安装

    /deveco-studio#download2.安装DevEco Studio具体安装流程请看官网3.新建项目填写路径4.修改试验代码5.编译生成和预览点击运行,然后选择下面那个6.打成HAP
    发表于 12-22 16:41

    鸿蒙开发AI应用(汇总)连载中

    )UI篇本篇基于DevEco Studio的JS框架,体验了一下鸿蒙的前端开发流程,并讲述设备应用的编译打包以及Hap安装的过程...7. 用鸿蒙开发AI应用(七)触摸屏控制LED本篇
    发表于 01-13 15:03

    鸿蒙HI3516-HAP的编译打包和安装

    鸿蒙HI3516-HAP的编译打包和安装​1.把源码包编译和烧录1.vsc导入HI3516项目https://repo.huaweicloud.com/harmonyos/os/1.0
    发表于 03-04 21:50

    OpenHarmony hap安装失败的原因及其解决方法解析

    OpenHarmony hap安装:error: failed to install bundle. error: install update incompatible.签名认证
    发表于 03-15 14:15

    浅析HarmonyOS APP和HAP的组成合集

    对于鸿蒙开发的初学者而言,了解 HarmonyOS 的一些基础理论知识尤为重要。本篇文章汇总了关于鸿蒙移动应用开发的重要基础知识——HarmonyOS APP 和 HAP 的构成,希望能为鸿蒙
    发表于 03-22 15:27

    OpenHarmony 3.1 Beta版本关键特性解析——HAP安装实现剖析

    。为了让大家深入了解 OpenHarmony 的威廉希尔官方网站 特点,本期对 OpenHarmony HAP安装实现进行剖析。一、HAP包介绍HAP
    发表于 03-28 14:29

    【HarmonyOS HiSpark AI Camera试用连载 】烧录鸿蒙3.0、测试hap应用

    ' }, Close() {app.terminate(); }}* js 的开发方式和主流的 Vue 等有些类似,搭配华为官方的 sdk ,上手还是挺容易的。* 编译 hap 包* 从鸿蒙 3.0 编译结果文件
    发表于 04-10 17:27

    请问鸿蒙hap包是否支持插件化开发?

    如题,安卓上可以使用dexclassloader机制动态加载其他apk作为插件使用,鸿蒙上用类似的能力吗?有什么解决方案呢?
    发表于 06-16 11:34

    鸿蒙上安装docker吗?

    android是不支持安装docker的,想了解下鸿蒙是否支持安装docker
    发表于 03-21 16:32

    鸿蒙上使用Python进行物联网编程

    炫耀!然而,这却是非常重要的一步:在鸿蒙上用使用 Python 进行物联网编程是可行的!!! 既然可行,加上 Python 语言天生的优势(易于掌握,开发效率高),那么真的值得持续打造,将鸿蒙上的 Python 进行到底。 所以,今天的主题就是利用 GPIO 搭配 I2C
    的头像 发表于 09-28 09:55 4328次阅读
    在<b class='flag-5'>鸿蒙上</b>使用Python进行物联网编程

    鸿蒙上安装按钮实现下载、暂停、取消、显示等操作

    今天给大家分享在鸿蒙上一个按钮实现下载、暂停、取消、显示下载进度操作。
    的头像 发表于 01-04 14:32 2329次阅读

    鸿蒙上实现“数字华容道”小游戏

    本篇文章教大家如何在鸿蒙上实现“数字华容道”小游戏。
    的头像 发表于 12-26 09:52 1266次阅读

    鸿蒙上实现简单的“每日新闻”

    这是一篇讲解如何实现基于鸿蒙 JS 的简单的每日新闻。
    的头像 发表于 12-26 09:58 883次阅读

    鸿蒙上开发“小蜜蜂”游戏

    小时候我们有个熟悉的游戏叫小蜜蜂。本文教大家在鸿蒙上学做这个小蜜蜂游戏。
    的头像 发表于 04-03 11:27 1708次阅读