<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙OS開發:【Stage模型應用程序包結構】

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

Stage模型應用程序包結構

為了讓開發者能對應用程序包在不同階段的形態更有清晰的認知,分別對開發態、編譯態、發布態的應用程序結構展開介紹。

開發態包結構

在DevEco Studio上[創建一個項目工程],并嘗試創建多個不同類型的Module。根據實際工程中的目錄對照本章節進行學習,可以有助于理解開發態的應用程序結構。

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

圖1 項目工程結構示意圖(以實際為準)

project

工程結構主要包含的文件類型及用途如下:

說明:

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

編譯態包結構

不同類型的Module編譯后會生成對應的HAP、HAR、HSP等文件,開發態視圖與編譯態視圖的對照關系如下:

圖2 開發態與編譯態的工程結構視圖 app-view

從開發態到編譯態,Module中的文件會發生如下變更:

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

說明:

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

發布態包結構

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

當應用發布上架到應用市場時,需要將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是發布上架到應用市場的基本單元,但是不能在設備上直接安裝和運行。
  • 在應用簽名、云端分發、端側安裝時,都是以HAP/HSP為單位進行簽名、分發和安裝的。

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

選擇合適的包類型

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

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

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

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

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

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

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

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

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開發
    +關注

    關注

    0

    文章

    351

    瀏覽量

    40646
  • 模型
    +關注

    關注

    1

    文章

    2775

    瀏覽量

    47873
  • 鴻蒙
    +關注

    關注

    55

    文章

    1866

    瀏覽量

    42180
  • 鴻蒙OS
    +關注

    關注

    0

    文章

    189

    瀏覽量

    4299
收藏 人收藏

    評論

    相關推薦

    鴻蒙Stage模型--概述

    Stage模型:HarmonyOS 3.1 Develper Preview版本開始新增的模型,是目前主推且會長期演進的模型。在該模型中,由
    的頭像 發表于 01-29 13:59 ?766次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Stage</b><b class='flag-5'>模型</b>--概述

    Stage 模型深入解讀

    跨設備的遷移和協同機制。本文為大家詳細介紹 Stage 模型。 一、Stage 模型概念 應用開發模型
    的頭像 發表于 02-18 09:28 ?536次閱讀
    <b class='flag-5'>Stage</b> <b class='flag-5'>模型</b>深入解讀

    鴻蒙OS開發案例:【Stage模型卡片】

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

    鴻蒙OS應用程序開發

    這份學習文檔主要是帶領大家在鴻蒙OS上學習開發一個應用程序,主要知識點如下:1、U-Boot引導文件燒寫方式;2、內核鏡像燒寫方式;3、鏡像運行。
    發表于 09-11 14:39

    應用程序開發

    應用程序開發不少開發者還針對AI Camera、手表做一些應用和前端展示,這里給到的應用程序開發資料可能有所幫助,主要內容有:鴻蒙
    發表于 11-24 11:58

    什么是程序包?

    什么是程序包?編譯一個程序包 導入程序包
    發表于 12-17 07:20

    Stage模型深入解讀

    的遷移和協同機制。本文為大家詳細介紹Stage模型。 一、Stage模型概念 應用開發模型是運行
    發表于 03-15 10:32

    OpenHarmony應用程序包整體說明

    來源:OpenHarmony官網 應用程序包結構Stage模型)*附件:OpenHarmony應用程序包整體說明.docx
    發表于 09-20 15:34

    OpenHarmony應用模型的構成要素與Stage優勢

    一、應用模型的構成要素 應用模型是OpenHarmony為開發者提供的應用程序所需能力的抽象提煉,它提供了應用程序必備的組件和運行機制。有了
    發表于 09-26 16:48

    鴻蒙 OS 應用開發初體驗

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

    NI Package Manager創建程序包

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

    modbus開發程序包

    modbus開發程序包 詳細說明
    發表于 07-09 17:52 ?114次下載

    uC/OS-II 應用程序基本結構及重要的API介紹

    應用uC/OS-II,自然要為它開發應用程序,下面論述基于uC/OS-II的應用程序的基本結構
    發表于 10-24 11:28 ?2次下載

    第4節《鴻蒙OS應用程序開發

    這份學習文檔主要是帶領大家在鴻蒙OS上學習開發一個應用程序,主要知識點如下: 1、U-Boot引導文件燒寫方式; 2、內核鏡像燒寫方式; 3、鏡像運行。
    發表于 10-20 15:40 ?15次下載
    第4節《<b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>應用程序</b><b class='flag-5'>開發</b>》

    Stage模型深入解讀

    形態下統一的應用組件生命周期,并支持跨設備的遷移和協同機制。本文為大家詳細介紹Stage模型。 一 Stage模型概念 應用開發
    的頭像 發表于 03-16 13:35 ?614次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>