自創建了 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文章
3309瀏覽量
42471 -
鴻蒙
+關注
關注
57文章
2339瀏覽量
42805 -
OpenHarmony
+關注
關注
25文章
3713瀏覽量
16254
原文標題:鴻蒙上實現直接安裝hap
文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論