6、鸿蒙学习-Stage模型应用程序包结构

基于Stage模型开发的应用,经编译打包后,其应用程序的结构如下图应用程序包结构(Stage模型)所示。开发者需要熟悉应用程序包结构相关的基本概念。

一、在开发态,一个应用包含一个或者多个Module,可以在DevEco Studio工程中。Module是HarmonyOS 应用/服务的基本功能单元,包含了源代码、资源文件、第三方库/服务配置文件,每一个Module都可以独立进行编译和运行。Module分为“Ability” 和 “Library”两种类型,“Ability”类型的Module对应于编译后的HAP(Harmony Ability Package);“Library”类型的Module对应于HAR(Harmony Archive),或者HSP(Harmony Shared Package)。


一个Module可以包含一个或多个UIAbility组件,如下图所示:

 

二、开发者通过DevEco Studio 把应用程序编译为一个或者多个.hap后缀的文件,即HAP。HAP是HarmonyOS应用安装的基本单位,包含了编译后的代码、资源、三方库及配置文件。HAP可分为Entry和Feature两种类型。


(1)Entry类型的HAP:是应用的主模块,在module.json5配置文件中的type标签配置为“entry”类型。在同一个应用中,同一设置类型只支持一个Entry类型的HAP,通常用于实现应用的入口界面、入口图标、主特性功能等。
(2)Feature类型的HAP:是应用的动态特性模块,在module.json5配置文件中的type标签配置为“feature”类型。一个应用程序包可以包含一个或多个Feature类型的HAP,也可以不包含;Feature类型的HAP通常用于实现应用的特性功能,可以配置成按需下载安装,也可以配置成随Entry类型的HAP一起下载安装(请参见module对象内部结构中的“deliveryWithInstall”)。

三、

每个HarmonyOS应用可以包含多个.hap文件,一个应用中的.hap文件合在一起称为一个Bundle,而bundleName就是应用的唯一标识(请参见app.json5配置文件中的bundleName标签)。需要特别说明的是:在应用上架到应用市场时,需要把应用包含的所有.hap文件(即Bundle)打包为一个.app后缀的文件用于上架,这个.app文件称为App Pack(Application Package),其中同时包含了描述App Pack属性的pack.info文件;在云端(服务器)分发和终端设备安装时,都是以HAP为单位进行分发和安装的。

四、打包后的HAP包结构包括ets、libs、resources等文件夹和resources.index、module.json、pack.info等文件。

  • ets目录用于存放应用代码编译后的字节码文件。
  • libs目录用于存放库文件。库文件是HarmonyOS应用依赖的第三方代码(.so二进制文件)。
  • resources目录用于存放应用的资源文件(字符串、图片等),便于开发者使用和维护,详见资源分类与访问
  • resources.index是资源索引表,由IDE编译工程时生成。
  • module.json是HAP的配置文件,内容由工程配置中的module.json5和app.json5组成,该文件是HAP中必不可少的文件。IDE会自动生成一部分默认配置,开发者按需修改其中的配置。详细字段请参见应用配置文件
  • pack.info是Bundle中用于描述每个HAP属性的文件,例如app中的bundleName和versionCode信息、module中的name、type和abilities等信息,由IDE工具生成Bundle包时自动生成。

应用程序包结构(Stage模型):

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-03 20:06:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-03 20:06:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-03 20:06:03       87 阅读
  4. Python语言-面向对象

    2024-04-03 20:06:03       96 阅读

热门阅读

  1. Vue-------自定义指令

    2024-04-03 20:06:03       39 阅读
  2. git diff

    2024-04-03 20:06:03       37 阅读
  3. linux ldd依赖拷贝

    2024-04-03 20:06:03       40 阅读
  4. LeetCode 36

    2024-04-03 20:06:03       36 阅读
  5. U3D开发中Json管理器的常用思路

    2024-04-03 20:06:03       37 阅读
  6. MySQL面试题系列-2

    2024-04-03 20:06:03       36 阅读
  7. Mysql中的那些索引

    2024-04-03 20:06:03       40 阅读
  8. c++ 死锁检测与内存泄露

    2024-04-03 20:06:03       28 阅读
  9. 自定义注解实现对实体类的字段进行校验

    2024-04-03 20:06:03       38 阅读
  10. Redis入门--头歌实验Redis基本命令

    2024-04-03 20:06:03       30 阅读
  11. Android:身份证识别功能实现

    2024-04-03 20:06:03       35 阅读