0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙OS開發(fā):【Stage模型應(yīng)用程序包結(jié)構(gòu)】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-15 16:08 ? 次閱讀

Stage模型應(yīng)用程序包結(jié)構(gòu)

為了讓開發(fā)者能對應(yīng)用程序包在不同階段的形態(tài)更有清晰的認(rèn)知,分別對開發(fā)態(tài)、編譯態(tài)、發(fā)布態(tài)的應(yīng)用程序結(jié)構(gòu)展開介紹。

開發(fā)態(tài)包結(jié)構(gòu)

在DevEco Studio上[創(chuàng)建一個項目工程],并嘗試創(chuàng)建多個不同類型的Module。根據(jù)實際工程中的目錄對照本章節(jié)進行學(xué)習(xí),可以有助于理解開發(fā)態(tài)的應(yīng)用程序結(jié)構(gòu)。

開發(fā)前請熟悉鴻蒙開發(fā)指導(dǎo)文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

圖1 項目工程結(jié)構(gòu)示意圖(以實際為準(zhǔn))

project

工程結(jié)構(gòu)主要包含的文件類型及用途如下:

說明:

  • AppScope目錄由DevEco Studio自動生成,不可更改。
  • Module目錄名稱可以由DevEco Studio自動生成(比如entry、library等),也可以自定義。為了便于說明,下表中統(tǒng)一采用Module_name表示。
文件類型說明
配置文件包括應(yīng)用級配置信息、以及Module級配置信息: - AppScope > app.json5 :[app.json5配置文件],用于聲明應(yīng)用的全局配置信息,比如應(yīng)用Bundle名稱、應(yīng)用名稱、應(yīng)用圖標(biāo)、應(yīng)用版本號等。 - Module_name > src > main > module.json5 :[module.json5配置文件],用于聲明Module基本信息、支持的設(shè)備類型、所含的組件信息、運行所需申請的權(quán)限等。
ArkTS源碼文件Module_name > src > main > ets :用于存放Module的ArkTS源碼文件(.ets文件)。
資源文件包括應(yīng)用級資源文件、以及Module級資源文件,支持圖形、多媒體、字符串、布局文件等,詳見[資源分類與訪問]。 -AppScope > resources:用于存放應(yīng)用需要用到的資源文件。 -Module_name > src > main > resources:用于存放該Module需要用到的資源文件。
其他配置文件用于編譯構(gòu)建,包括構(gòu)建配置文件、編譯構(gòu)建任務(wù)腳本、混淆規(guī)則文件、依賴的共享包信息等。 - build-profile.json5 :工程級或Module級的構(gòu)建配置文件,包括應(yīng)用簽名、產(chǎn)品配置等。 - hvigorfile.ts :應(yīng)用級或Module級的編譯構(gòu)建任務(wù)腳本,開發(fā)者可以自定義編譯構(gòu)建工具版本、控制構(gòu)建行為的配置參數(shù)。 - obfuscation-rules.txt :混淆規(guī)則文件?;煜_啟后,在使用Release模式進行編譯時,會對代碼進行編譯、混淆及壓縮處理,保護代碼資產(chǎn)。 - oh-package.json5 :用于存放依賴庫的信息,包括所依賴的三方庫和共享包。

編譯態(tài)包結(jié)構(gòu)

不同類型的Module編譯后會生成對應(yīng)的HAP、HAR、HSP等文件,開發(fā)態(tài)視圖與編譯態(tài)視圖的對照關(guān)系如下:

圖2 開發(fā)態(tài)與編譯態(tài)的工程結(jié)構(gòu)視圖 app-view

從開發(fā)態(tài)到編譯態(tài),Module中的文件會發(fā)生如下變更:

  • ets目錄 :ArkTS源碼編譯生成.abc文件。
  • resources目錄 :AppScope目錄下的資源文件會合入到Module下面資源目錄中,如果兩個目錄下的存在重名文件,編譯打包后只會保留AppScope目錄下的資源文件。
  • module配置文件 :AppScope目錄下的app.json5文件字段會合入到Module下面的module.json5文件之中,編譯后生成HAP或HSP最終的module.json文件。

說明:

在編譯HAP和HSP時,會把他們所依賴的HAR直接編譯到HAP和HSP中。

發(fā)布態(tài)包結(jié)構(gòu)

每個應(yīng)用中至少包含一個.hap文件,可能包含若干個.hsp文件、也可能不含,一個應(yīng)用中的所有.hap與.hsp文件合在一起稱為 Bundle ,其對應(yīng)的bundleName是應(yīng)用的唯一標(biāo)識(詳見[app.json5配置文件]中的bundleName標(biāo)簽)。

當(dāng)應(yīng)用發(fā)布上架到應(yīng)用市場時,需要將Bundle打包為一個.app后綴的文件用于上架,這個.app文件稱為 App Pack (Application Package),與此同時,DevEco Studio工具自動會生成一個pack.info文件。pack.info文件描述了App Pack中每個HAP和HSP的屬性,包含APP中的bundleName和versionCode信息、以及Module中的name、type和abilities等信息。

說明:

  • App Pack是發(fā)布上架到應(yīng)用市場的基本單元,但是不能在設(shè)備上直接安裝和運行。
  • 在應(yīng)用簽名、云端分發(fā)、端側(cè)安裝時,都是以HAP/HSP為單位進行簽名、分發(fā)和安裝的。

圖3 編譯發(fā)布與上架部署流程圖 hap-release

選擇合適的包類型

HAP、HAR、HSP三者的功能和使用場景總結(jié)對比如下:

Module類型包類型說明
Ability[HAP]應(yīng)用的功能模塊,可以獨立安裝和運行,必須包含一個entry類型的HAP,可選包含一個或多個feature類型的HAP。
Static Liary[HAR]靜態(tài)共享包,編譯態(tài)復(fù)用。 - 支持應(yīng)用內(nèi)共享,也可以發(fā)布后供其他應(yīng)用使用。 - 作為二方庫,發(fā)布到[OHPM]私倉,供公司內(nèi)部其他應(yīng)用使用。 - 作為三方庫,發(fā)布到[OHPM]中心倉,供其他應(yīng)用使用。 - 多包(HAP/HSP)引用相同的HAR時,會造成多包間代碼和資源的重復(fù)拷貝,從而導(dǎo)致應(yīng)用包膨大。
Shared Liary[HSP]動態(tài)共享包,運行時復(fù)用。 - 當(dāng)前僅支持應(yīng)用內(nèi)共享。 - 當(dāng)多包(HAP/HSP)同時引用同一個共享包時,采用HSP替代HAR,可以避免HAR造成的多包間代碼和資源的重復(fù)拷貝,從而減小應(yīng)用包大小。

HAP、HSP、HAR支持的規(guī)格對比如下,其中“√”表示是,“×”表示否。

開發(fā)者可以根據(jù)實際場景所需的能力,選擇相應(yīng)類型的包進行開發(fā)。在后續(xù)的章節(jié)中還會針對如何使用[HAP]、[HAR]、[HSP]分別展開詳細(xì)介紹。

規(guī)格HAPHARHSP
支持在配置文件中聲明[UIAbility]組件與[ExtensionAbility]組件××
支持在配置文件中聲明[pages]頁面×
支持包含資源文件與.so文件
支持依賴其他HAR文件
支持依賴其他HSP文件
支持在設(shè)備上獨立安裝運行××

搜狗高速瀏覽器截圖20240326151450.png

說明:
HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿

  • HAR雖然不支持在配置文件中聲明pages頁面,但是可以包含pages頁面,并通過[命名路由]的方式進行跳轉(zhuǎn)。
  • 由于HSP僅支持應(yīng)用內(nèi)共享,如果HAR依賴了HSP,則該HAR文件僅支持應(yīng)用內(nèi)共享,不支持發(fā)布到二方倉或三方倉供其他應(yīng)用使用,否則會導(dǎo)致編譯失敗。
  • HAR和HSP均不支持循環(huán)依賴,也不支持依賴傳遞。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    364

    瀏覽量

    40788
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3123

    瀏覽量

    48664
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2305

    瀏覽量

    42698
  • 鴻蒙OS
    +關(guān)注

    關(guān)注

    0

    文章

    188

    瀏覽量

    4361
收藏 人收藏

    評論

    相關(guān)推薦

    Stage 模型深入解讀

    設(shè)備的遷移和協(xié)同機制。本文為大家詳細(xì)介紹 Stage 模型。 一、Stage 模型概念 應(yīng)用開發(fā)模型
    的頭像 發(fā)表于 02-18 09:28 ?1066次閱讀
    <b class='flag-5'>Stage</b> <b class='flag-5'>模型</b>深入解讀

    鴻蒙OS開發(fā)案例:【Stage模型卡片】

    本示例展示了Stage模型卡片提供方的創(chuàng)建與使用。
    的頭像 發(fā)表于 04-09 17:13 ?930次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>案例:【<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>卡片】

    鴻蒙OS應(yīng)用程序開發(fā)

    這份學(xué)習(xí)文檔主要是帶領(lǐng)大家在鴻蒙OS上學(xué)習(xí)開發(fā)一個應(yīng)用程序,主要知識點如下:1、U-Boot引導(dǎo)文件燒寫方式;2、內(nèi)核鏡像燒寫方式;3、鏡像運行。
    發(fā)表于 09-11 14:39

    什么是程序包?

    什么是程序包?編譯一個程序包 導(dǎo)入程序包
    發(fā)表于 12-17 07:20

    OpenHarmony應(yīng)用程序包整體說明

    來源:OpenHarmony官網(wǎng) 應(yīng)用程序包結(jié)構(gòu)Stage模型)*附件:OpenHarmony應(yīng)用程序包整體說明.docx
    發(fā)表于 09-20 15:34

    鴻蒙 OS 應(yīng)用開發(fā)初體驗

    Package 的縮寫)。是鴻蒙操作系統(tǒng)設(shè)計的應(yīng)用程序包格式。 .hap 文件包含了應(yīng)用程序的代碼、資源和元數(shù)據(jù)等信息,用于在 HarmonyOS 設(shè)備上安裝和運行應(yīng)用程序。 整
    發(fā)表于 11-02 19:38

    NI Package Manager創(chuàng)建程序包

    在安裝了PackageManager的任何系統(tǒng)上安裝單個程序包。 雙擊程序包,打開Package Manager。 按照安裝提示完成安裝。 這是LabVIEW的一個功能介紹,更多的使用方法與開發(fā)案例,歡迎登錄官網(wǎng),了解更多信息
    發(fā)表于 11-19 20:11

    modbus開發(fā)程序包

    modbus開發(fā)程序包 詳細(xì)說明
    發(fā)表于 07-09 17:52 ?114次下載

    STM32F10xxx USB開發(fā)者套件程序包

    STM32F10xxx USB開發(fā)者套件程序包
    發(fā)表于 05-20 16:08 ?14次下載

    uC/OS-II 應(yīng)用程序基本結(jié)構(gòu)及重要的API介紹

    應(yīng)用uC/OS-II,自然要為它開發(fā)應(yīng)用程序,下面論述基于uC/OS-II的應(yīng)用程序的基本結(jié)構(gòu)
    發(fā)表于 10-24 11:28 ?2次下載

    STM32智能小車的試用Android應(yīng)用程序包免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32智能小車的試用Android應(yīng)用程序包免費下載
    發(fā)表于 03-19 16:03 ?17次下載
    STM32智能小車的試用Android<b class='flag-5'>應(yīng)用程序包</b>免費下載

    第4節(jié)《鴻蒙OS應(yīng)用程序開發(fā)

    這份學(xué)習(xí)文檔主要是帶領(lǐng)大家在鴻蒙OS上學(xué)習(xí)開發(fā)一個應(yīng)用程序,主要知識點如下: 1、U-Boot引導(dǎo)文件燒寫方式; 2、內(nèi)核鏡像燒寫方式; 3、鏡像運行。
    發(fā)表于 10-20 15:40 ?15次下載
    第4節(jié)《<b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>應(yīng)用程序</b><b class='flag-5'>開發(fā)</b>》

    Stage模型深入解讀

    形態(tài)下統(tǒng)一的應(yīng)用組件生命周期,并支持跨設(shè)備的遷移和協(xié)同機制。本文為大家詳細(xì)介紹Stage模型。 一 Stage模型概念 應(yīng)用開發(fā)
    的頭像 發(fā)表于 03-16 13:35 ?859次閱讀

    SNMP安裝程序包

    電子發(fā)燒友網(wǎng)站提供《SNMP安裝程序包.zip》資料免費下載
    發(fā)表于 08-07 10:53 ?2次下載
    SNMP安裝<b class='flag-5'>程序包</b>

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型切換Stage模型概述

    本文介紹如何將一個FA模型開發(fā)的聲明式范式應(yīng)用切換到Stage模型
    的頭像 發(fā)表于 06-26 14:40 ?313次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>Ability Kit<b class='flag-5'>程序</b>框架服務(wù):FA<b class='flag-5'>模型</b>切換<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>概述