自創(chuàng)建了 OpenHarmony開源應(yīng)用社區(qū)以來,目前已經(jīng)做了 3 個開源應(yīng)用和一些腳本文檔類項目,一直想著未來做一個類似安卓世界 F-Droid 一樣的自由開源軟件應(yīng)用倉庫,把 Gitee 組織內(nèi)的開源應(yīng)用陸續(xù)添加進去。
那為了實現(xiàn)這個小目標,首先要解決的問題肯定是如何在設(shè)備端實現(xiàn)直接安裝 hap,完全脫離電腦 hdc 命令。
效果如下:
關(guān)于這個問題,現(xiàn)階段網(wǎng)上可能搜不到什么特別有價值的信息,那只能自己探索了,經(jīng)過幾天的研究和嘗試,目前給出以下兩種實現(xiàn)思路,希望能幫助到大家~
設(shè)備信息
一加 6T
OpenHarmony 3.2.11.1(此固件由 @AlgoIdeas 移植并發(fā)布)
實現(xiàn)思路1(官方接口)
參考文檔:應(yīng)用開發(fā)文檔 > 包管理 @ohos.bundle.installer (installer 模塊)
http://docs.openharmony.cn/pages/v3.2Beta/zh-cn/application-dev/reference/apis/js-apis-installer.md/
安裝應(yīng)用:
BundleInstaller.install
卸載應(yīng)用:
BundleInstaller.uninstall
需要注意的是,這個 API 需要 ohos.permission.INSTALL_BUNDLE 權(quán)限,權(quán)限等級為 system_core,所以我們要配置 APL 或者 ACL 方式修改應(yīng)用的Profile。
具體參考:應(yīng)用開發(fā)文檔 > 訪問控制(權(quán)限)開發(fā)概述,可手動或自動簽名,文檔內(nèi)都有詳細說明。
http://docs.openharmony.cn/pages/v3.2Beta/zh-cn/application-dev/security/accesstoken-overview.md/重中之重,大坑來了,卸載 API 的調(diào)用很順利,但安裝始終報 17700012 錯誤碼(hap 路徑有問題),一度懷疑官方文檔寫的不夠準確,中間的折騰就不再細說了。 最終和其他小伙伴的探討和嘗試下,終于搞定了,只要按照以下三點說明,肯定可以,這三點絕對比官方文檔靠譜。 ①hap 包要放到/data/app/el2/100/base/ 你的應(yīng)用包名 /haps/entry/files/ ②但是,hapFilePaths前綴要寫:(謎之操作)
/data/storage/el2/base/haps/entry/files/③并且,hapFilePaths 需要寫上文件名,并且必須和步驟 1 中 hap 包的名字保持一致。
至于如何打開應(yīng)用,暫時還沒繼續(xù)研究,知道的小伙伴們可以在評論區(qū)展示一下。
實現(xiàn)思路 2(另辟蹊徑)
實際上我是先想到的這個方法,因為當時沒仔細看官方文檔,忽略了有包管理 API 的存在,這種方式畢竟是非常規(guī)手段,如果有官方 API 可用當然還是首選官方 API 的。
開發(fā)一個 shell 命令服務(wù)放到系統(tǒng)內(nèi),用于操作 bm/aa 等本地 shell 命令去安裝和打開應(yīng)用,并提供 http 或其他協(xié)議的接口給上層應(yīng)用調(diào)用,思路清奇哈哈。
參考文檔:設(shè)備開發(fā)文檔 > Shell命令開發(fā)指導(dǎo)貼
http://docs.openharmony.cn/pages/v3.2Beta/zh-cn/device-dev/kernel/kernel-small-debug-shell-guide.md/
不一定非得參考這個,自己寫一個命令行工具實現(xiàn)就行。
可以放到/system/bin/目錄,掛載系統(tǒng)分區(qū)可讀可寫:
mount-oremount,rw/添加一個引導(dǎo)啟動配置,用于開機自動啟動我們自己寫的這個 shell 命令服務(wù)。
參考文檔:設(shè)備開發(fā)文檔 > init啟動引導(dǎo)組件
http://docs.openharmony.cn/pages/v3.2Beta/zh-cn/device-dev/subsystems/subsys-boot-init-cfg.md/其實很簡單,文檔內(nèi)有開發(fā)實例,就是一個簡單的 json 配置文件。 參考上面的掛載系統(tǒng)分區(qū)可讀可寫命令,然后放到/system/etc/init/目錄,然后重啟系統(tǒng),服務(wù)將自動啟動。 至此,我們開發(fā)的應(yīng)用只需要調(diào)用本機的一個接口,即可實現(xiàn)安裝、卸載、打開應(yīng)用等操作。 很明顯這違背了 OpenHarmony 的訪問控制權(quán)限機制,所以我稱之為非常規(guī)手段,并不推薦這么做。
感興趣的小伙伴們,可以關(guān)注 OpenHarmony 開源應(yīng)用社區(qū):
https://gitee.com/ohos-dev
-
開源
+關(guān)注
關(guān)注
3文章
3680瀏覽量
43819 -
鴻蒙
+關(guān)注
關(guān)注
60文章
2618瀏覽量
44040 -
OpenHarmony
+關(guān)注
關(guān)注
29文章
3853瀏覽量
18597
原文標題:鴻蒙上實現(xiàn)直接安裝hap
文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
編寫HAP應(yīng)用及開發(fā)板上調(diào)試端到端指南
轉(zhuǎn)發(fā):鴻蒙HI3516-HAP的編譯打包和安裝
用鴻蒙開發(fā)AI應(yīng)用(匯總)連載中
鴻蒙HI3516-HAP的編譯打包和安裝
OpenHarmony hap包安裝失敗的原因及其解決方法解析
淺析HarmonyOS APP和HAP的組成合集
OpenHarmony 3.1 Beta版本關(guān)鍵特性解析——HAP包安裝實現(xiàn)剖析
【HarmonyOS HiSpark AI Camera試用連載 】燒錄鴻蒙3.0、測試hap應(yīng)用
請問鴻蒙hap包是否支持插件化開發(fā)?
在鴻蒙上使用Python進行物聯(lián)網(wǎng)編程

評論