自創(chuàng)建了 OpenHarmony開源應(yīng)用社區(qū)以來(lái),目前已經(jīng)做了 3 個(gè)開源應(yīng)用和一些腳本文檔類項(xiàng)目,一直想著未來(lái)做一個(gè)類似安卓世界 F-Droid 一樣的自由開源軟件應(yīng)用倉(cāng)庫(kù),把 Gitee 組織內(nè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)用開發(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)用開發(fā)文檔 > 訪問(wèn)控制(權(quán)限)開發(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)題),一度懷疑官方文檔寫的不夠準(zhǔn)確,中間的折騰就不再細(xì)說(shuō)了。 最終和其他小伙伴的探討和嘗試下,終于搞定了,只要按照以下三點(diǎn)說(shuō)明,肯定可以,這三點(diǎn)絕對(duì)比官方文檔靠譜。 ①hap 包要放到/data/app/el2/100/base/ 你的應(yīng)用包名 /haps/entry/files/ ②但是,hapFilePaths前綴要寫:(謎之操作)
/data/storage/el2/base/haps/entry/files/③并且,hapFilePaths 需要寫上文件名,并且必須和步驟 1 中 hap 包的名字保持一致。
至于如何打開應(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 的。
開發(fā)一個(gè) 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/
不一定非得參考這個(gè),自己寫一個(gè)命令行工具實(shí)現(xiàn)就行。
可以放到/system/bin/目錄,掛載系統(tǒng)分區(qū)可讀可寫:
mount-oremount,rw/添加一個(gè)引導(dǎo)啟動(dòng)配置,用于開機(jī)自動(dòng)啟動(dòng)我們自己寫的這個(gè) shell 命令服務(wù)。
參考文檔:設(shè)備開發(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)有開發(fā)實(shí)例,就是一個(gè)簡(jiǎn)單的 json 配置文件。 參考上面的掛載系統(tǒng)分區(qū)可讀可寫命令,然后放到/system/etc/init/目錄,然后重啟系統(tǒng),服務(wù)將自動(dòng)啟動(dòng)。 至此,我們開發(fā)的應(yīng)用只需要調(diào)用本機(jī)的一個(gè)接口,即可實(shí)現(xiàn)安裝、卸載、打開應(yīng)用等操作。 很明顯這違背了 OpenHarmony 的訪問(wèn)控制權(quán)限機(jī)制,所以我稱之為非常規(guī)手段,并不推薦這么做。
感興趣的小伙伴們,可以關(guān)注 OpenHarmony 開源應(yīng)用社區(qū):
https://gitee.com/ohos-dev
-
開源
+關(guān)注
關(guān)注
3文章
3309瀏覽量
42471 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2339瀏覽量
42805 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3713瀏覽量
16254
原文標(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)先 登錄
相關(guān)推薦
評(píng)論