HarmonyOS應用程序包-(下)

HarmonyOS應用程序包-(下)

1.多HAP的開發調試與發布部署流程

多HAP的開發調試與發布部署流程如下圖所示。

圖1 多HAP的開發調試與發布部署流程

img

開發

開發者通過DevEco Studio工具按照業務的需要創建多個Module,在相應的Module中完成自身業務的開發。

調試

通過DevEco Studio編譯打包,生成單個或者多個HAP,即可基于HAP進行調試。如需根據不同的部署環境、目標人群、運行環境等,將同一個HAP定制編譯為不同版本,請參見定制編譯指導。

在調試前,需要先安裝或更新HAP,以下介紹具體做法。

  • 使用DevEco Studio進行調試

    使用指導可參考應用程序包調試方法,其中包括了單HAP與多HAP通過DevEco Studio工具的安裝調試方法。

  • 使用hdc工具(可通過HarmonyOS SDK獲取,在SDK的toolchains目錄下)進行調試

    在調試前,需要先安裝或更新HAP,此處有兩種方式。

  1. 直接使用hdc安裝、更新HAP。

    HAP的路徑為開發平臺上的文件路徑,以Windows開發平臺為例,命令參考如下:

    // 安裝、更新,多HAP可以指定多個文件路徑
    hdc install C:\entry.hap C:\feature.hap
    // 執行結果
    install bundle successfully.
    // 卸載
    hdc uninstall com.example.myapplication
    // 執行結果
    uninstall bundle successfully.
    
  2. 先執行hdc shell,再使用bm工具安裝、更新HAP。

    HAP的文件路徑為真機上的文件路徑,命令參考如下:

    // 先執行hdc shell才能使用bm工具
    hdc shell
    // 安裝、更新,多HAP可以指定多個文件路徑
    bm install -p /data/app/entry.hap /data/app/feature.hap
    // 執行結果
    install bundle successfully.
    // 卸載
    bm uninstall -n com.example.myapplication
    // 執行結果
    uninstall bundle successfully.
    

    完成HAP安裝或更新后,即可參考相關調試命令進行調試。

發布

當開發的程序包滿足發布要求時,可以在工具中打包編譯生成App包。將該App包上架到應用市場云端,應用市場會對上架的App包校驗簽名,校驗簽名通過后會將App包中的HAP拆分出來,同時對拆分出的HAP重新添加簽名,然后對HAP進行分發。

部署

用戶在設備上的應用市場客戶端能夠看到各種各樣的應用,這些應用均由云端分發而來,有些是多HAP應用,有些是單HAP應用。用戶選擇某個應用后,應用市場將下載應用所包含的全部deliveryWithInstall設置為“true”的HAP。

應用在終端設備上的安裝

下載完成后,應用市場客戶端再調用系統中包管理服務的安裝接口安裝下載的HAP,包管理服務以應用為單位將其中所有HAP部署到指定目錄下,以完成應用的安裝。

2.多HAP使用規則

  • App Pack包不能直接安裝到設備上,只是上架應用市場的單元。
  • App Pack包中所有HAP的配置文件中的bundleName標簽必須一致。
  • App Pack包中所有HAP的配置文件中的versionCode標簽必須一致。
  • App Pack包中同一設備類型的所有HAP中必須有且只有一個entry類型的HAP,feature類型的HAP可以有一個或者多個,也可以沒有。
  • App Pack包中的每個HAP必須配置moduleName標簽,同一設備類型的所有HAP對應的moduleName標簽必須唯一。
  • 同一應用的所有HAP簽名證書要保持一致。上架應用市場是以App Pack的形式上架,并對其進行了簽名。應用市場分發時會將所有HAP從App Pack中拆分出來,同時對其中的所有HAP進行重簽名,這樣保證了所有HAP簽名證書的一致性。在調試階段,開發者通過命令行或IDE將HAP安裝到設備上時要保證所有HAP簽名證書一致,否則會出現安裝失敗的問題。

3.多HAP運行機制及數據通信方式

多HAP機制主要是為方便開發者進行模塊化管理。HAP和應用運行時的進程并不是一一對應的,具體運行機制如下:

  • 默認情況下,應用中(同一包名)的所有UIAbility、ServiceExtensionAbility、DataShareExtensionAbility運行在同一個獨立進程中,其他同類型ExtensionAbility分別運行在單獨的進程。
  • HAP支持在module.json5(Stage模型)或者config.json(FA模型)中通過process標簽配置單獨的進程(僅系統應用支持,三方應用不支持)。配置了process的HAP,其組件運行在單獨的process進程中,多個HAP可以配置相同的process,則這些HAP運行在相同進程中,process配置的詳細說明請參見module.json5配置文件。
  • 應用運行時,同一進程中的UIAbility組件被啟動時,才加載對應HAP的資源和代碼。

基于上述機制,多HAP數據通信方式如下:

  • 同一進程內的數據通信,請參見線程間通信。
  • 跨進程的數據通信,請參見進程間通信。
  • 多HAP如果運行在同一進程,則多HAP間組件的通信方式與同一HAP內組件的通信方式相同。

4.應用程序包安裝和卸載流程

開發者

開發者可以通過調試命令進行應用的安裝和卸載,可參考多HAP的調試流程。

圖1 應用程序包安裝和卸載流程(開發者)

img

終端設備用戶

開發者將應用上架應用市場后,終端設備用戶可以在終端設備上使用應用市場進行應用的安裝和卸載。

圖2 應用程序包安裝和卸載流程(終端設備用戶)

img

5.應用程序包更新流程

HarmonyOS包管理服務提供了應用程序包更新能力,更新方式如下。

  1. 應用市場內更新:新版本應用通過應用市場上架后,應用市場通知終端用戶該應用有新版本,終端用戶可以根據通知到應用市場(客戶端)進行應用升級。
  2. 應用內檢測升級:終端用戶啟動應用時,應用市場檢測到該應用有新版本會通知終端用戶,可以到應用市場進行應用的下載更新。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536681.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536681.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536681.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++歸并排序詳解以及代碼實現

1. 介紹 歸并排序(Merge Sort)是一種采用分治法(Divide and Conquer)策略的排序算法。該算法首先將已有序的子序列合并,得到完全有序的序列。在歸并排序中,合并操作是將兩個有序表合并成一個有序表的過程。…

echarts實現七天天氣預報

效果圖 實現代碼 const imglist {"晴": data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADMAAAAzCAYAAAA6oTAqAAAAAXNSR0IArs4c6QAAByJJREFUaEO9Wl1rFGcUfs67u/nYbOIXJlGopBTx27aQWGOwSMS75sao2BtBQVD/gWCJouA/sIWCBW8M1nqjd1IplW5DYqLWEUoSi9iEjHaJmaz2d05ZWd2Nj…

KingbaseV8R6單實例定時全量備份步驟

此場景為單機數據庫節點內部備份,方便部署和操作,但備份REPO與數據庫實例處于同一個物理主機,冗余度較低。 前期準備 配置ksql免密登錄(必須) 在Kingbase數據庫運行維護中,經常用到ksql工具登錄數據庫,本地免密登錄…

基于OpenCV的圖像顏色與形狀識別的原理

基于 OpenCV 的圖像顏色與形狀識別是通過以下原理實現的: 圖像預處理:首先,將彩色圖像轉換為灰度圖像。這樣做是因為在灰度圖像中,每個像素只有一個顏色通道,可以更方便地進行后續處理。 閾值分割:對灰度圖…

Linux系統編程(六):進程(下)

參考引用 UNIX 環境高級編程 (第3版)嵌入式Linux C應用編程-正點原子 1. 進程與程序 1.1 main() 函數由誰調用? C 語言程序總是從 main 函數開始執行int main(void) int main(int argc, char *argv[]) // 如果需要向應用程序傳參,則選擇該種寫法操作系…

C++ 比 C語言增加的新特性 2

1.C新增了帶默認值參數的函數 1.1 格式 格式:返回值 函數名(參數1初始值1,..........){} 例如:void function(int a10){} 調用:不需要更改參數的值:function&#x…

基于SSM和微信小程序的高校體育場管理系統

文章目錄 項目介紹主要功能截圖:部分代碼展示設計總結項目獲取方式?? 作者主頁:超級無敵暴龍戰士塔塔開 ?? 簡介:Java領域優質創作者??、 簡歷模板、學習資料、面試題庫【關注我,都給你】 ??文末獲取源碼聯系?? 項目介紹 基于SSM和微信小程序的高校體育場管理系…

文本編輯器:Sublime Text (安裝+漢化)

下載 Sublime Text - Text Editing, Done Righthttps://www.sublimetext.com/Sublime Text官網 支持mac,Linux,Windows 安裝 選擇安裝路徑 next install 選擇安裝位置安裝就行了 漢化 進入了主界面按 CTRLshiftp 輸入install 選擇第一個 彈窗就按確…

服務器擴容未生效、不成功:解決方法

記一次解決服務器擴容未生效的解決辦法 老板:失憶啊,我花錢給服務器擴容了10000000G,但是數據庫和mq都還是用不了,到底是不是服務器磁盤滿了,你到底有沒有查一下什么原因導致服務用不了啊。 失憶:老板您確…

概率論1:下象棋問題(3.5)

每日小語 時刻望著他人的眼色行事,是騰飛不了的。自己怎么想就積極地去做,這是需要膽量的。——廣中平佑 題目 甲、乙二人下象棋, 每局甲勝的概率為a,乙勝的概率為b. 為簡化問題,設沒有和局的情況,這意味著a b1. 設想…

VR全景對普通人的生活有哪些好處?

許多普通人對VR全景還全然沒有概念,這是因為VR全景雖然一直在快速發展,但目前為止也不過幾年而已,但這發展的幾年同樣為我們普通人的生活帶來了切實的改變和便利。VR全景技術為人們帶來了沉浸感和真實感的體驗,讓我們感受到迥異于…

第十四章 集合(Set)

一、Set 接口(P518) 1. Set 接口基本介紹 (1)無序(添加和取出的順序不一致),沒有索引。 (2)不允許重復元素,所以最多包含一個 null。 2. Set 接口的常用方法…

數據結構:KMP算法

1.何為KMP算法 KMP算法是由Knuth、Morris和Pratt三位學者發明的,所以取了三位學者名字的首字母,叫作KMP算法。 2.KMP的用處 KMP主要用于字符串匹配的問題,主要思想是當出現字符串不匹配時,我們可以知道一部分之前已經匹配過的的文…

【期刊周報1】醫學好刊(SCI/SSCI/EI),含Top,領域廣,接收快!

為了向廣大學者朋友提供更優質的選刊服務,提高選刊質量,我處現開設周報專欄,以羅列我處合作的優質期刊~ 本期,小編給大家推薦的是醫學領域相關的熱門期刊,接收領域廣,無預警,且在最新檢索目錄內…

Python遙感影像深度學習指南(2)-在 PyTorch 中創建自定義數據集和加載器

在上一篇 文章中,我們Fast.ai 在衛星圖像中檢測云輪廓,檢測物體輪廓被稱為語義分割。雖然我們用幾行代碼就能達到 96% 的準確率,但該模型無法考慮數據集中提供的所有輸入通道(紅、綠、藍和近紅外)。問題在于,深度學習框架(如 Keras、Fast.ai 甚至 PyTorch)中的大多數語…

油煙凈化器如何做到高效凈化?科技力量,清新餐飲生活

我最近分析了餐飲市場的油煙凈化器等產品報告,解決了餐飲業廚房油膩的難題,更加方便了在餐飲業和商業場所有需求的小伙伴們。 油煙凈化器的出現,為我們的餐飲生活注入了一抹清新的色彩。然而,它究竟是如何工作的?為何能…

【開題報告】基于SSM的健康飲食系統設計與實現

1.研究背景 如今,隨著人們生活水平的提高和健康意識的增強,越來越多的人開始關注自己的飲食習慣,并希望通過合理的飲食來維持身體健康。然而,對于許多人來說,了解和選擇合適的飲食方式并不容易。傳統的飲食指導往往比…

【并發設計模式】聊聊Immutability模式利用不變性解決并發問題

上一篇文章,我們介紹了如何利用二階段停止協議進行優雅停止線程和線程池,本篇介紹在并發編程中數據安全性,我們知道針對于數據的操作,讀和寫(添加、刪除、修改), 在并發線程讀寫的時候,變量不加鎖的情況下,…

redis哨兵+redis主從復制(在虛擬機centos的docker下)

1.安裝docker Docker安裝(CentOS)簡單使用-CSDN博客 2.redis主從復制 redis主從復制(在虛擬機centos的docker下)-CSDN博客 3.編輯3個redis配置 cd /etc mkdir redis-sentinel cd redis-sentinel/ wget http://download.redis.io/redis-stable/sentinel.confcp sentinel.co…

ssh 免密登陸公鑰設置失敗分析調試

前景 看到這里肯定已經知道如何設置免密登陸。本文主要用于解決免密登陸設置失效問題。 ssh調試 目的 ssh設置了公鑰仍然無法免密登陸; 需要調試 解決 通過systemctl status sshd的日志輸出查看原因 步驟 打開調試 systemctl status sshd查看所在服務文件 $ sudo sys…