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

評(píng)論