【木棉花】知识分享——HarmonyOS APP和HAP的组成(上) 原创 精华

木棉花_小蓝
发布于 2022-1-23 22:36
浏览
5收藏

    春节不停更,此文正在参加「星光计划-春节更帖活动」

前言

    对于鸿蒙开发的初学者而言,了解HarmonyOS的一些基础理论知识尤为重要。本篇文章汇总了关于鸿蒙移动应用开发的重要基础知识——HarmonyOS APP和HAP的构成,希望能为鸿蒙开发的初学者们提供一定的帮助与启发。

  

【木棉花】知识分享——HarmonyOS APP和HAP的组成(上)-鸿蒙开发者社区

正文 

    【木棉花】知识分享——HarmonyOS APP和HAP的组成(上)-鸿蒙开发者社区

  在HarmonyOS的实践开发中,HarmonyOS的所有应用软件包都以Application Package(简称APP PACK)的形式发布,也就是说,APP是鸿蒙应用开发中所面对的主要对象。所以,了解APP的组成成分与内部结构,能让我们熟悉与理解HarmonyOS的开发环境,同时有助于我们掌握鸿蒙开发的基本功。

【木棉花】知识分享——HarmonyOS APP和HAP的组成(上)-鸿蒙开发者社区

    一个APP由两种重要的元素组成——“HAP”与“pack.info”(一个APP通常带有多个HAP)。HAP的全称为“HarmonyOS Ability Package”, 它是Ability的部署包(即HAP内带有Ability组件),由于HarmonyOS的应用代码是围绕Ability组件展开的,所以鸿蒙应用开发的关键在于对HAP的实践与设计。pack.info作为APP内的一个文件,主要用于描述APP内的每个HAP。

  接下我将展开讨论pack.info与HAP两者的组成,属性与特点。

【木棉花】知识分享——HarmonyOS APP和HAP的组成(上)-鸿蒙开发者社区

   pack.info由IDE编译生成,它有四个具体属性:1.delivery-with-install  其表示HAP是否支持随应用安装,如果配置为“true”,则表示支持随应用安装,如果配置为“false”,则反之;2.name 表示HAP的文件名;3.module 表示HAP的模块类型,分entry与feature两种,entry HAP是主模块的HAP,fea-ture HAP是动态模块的HAP;4.device type 表示支持该HAP运行的设备类型。

   有了这四个属性,pack.info便可以实现它对HAP的描述。

【木棉花】知识分享——HarmonyOS APP和HAP的组成(上)-鸿蒙开发者社区

  HAP是一个包含了代码,资源,第三方库和应用配置文件的模块包,它由Ability,resourse,libsconfig.json这四个具体的部分构成。前文也提到了,HAP有两种模块类型,分别是entry.HAP与feature.HAP。以下便是关于Ability,resourse,libsconfig.json相关内容的介绍。

  Ability是个比较抽象的概念,它的定义是——一个应用所具备能力的抽象。前文提到过,HAP中的相关应用代码是主要围绕Ability展开的,所以HAP中关于应用的代码主要用于构建相应的Ability。而Ability主要分两种类型:FA(feature Ability)和PA(Paticle Ability)。值得注意的是,FA有UI界面(全称User-Interface,指用户界面),而PA无UI界面。总而言之,Ability是应用组成的基本单元,在应用开发中占有重要地位,它能够为鸿蒙应用实现特定的业务功能。

  libs是一个重要的文件目录。要认识libs,我们首先需要知道HAR的概念。HAR,全称为HarmonyOS Ability Resourse, 可为HAP中的源代码,资源文件和config.json文件提供构建应用所需的所有内容。而在DevEco Studio中,HAR中的库文件主要储存在工程包的libs目录中。所以,libs是用于存放HAP的库文件的核心目录。

  resourses是统一存放应用的资源文件(包括字符串,图片,音频等)的目录。resourses包括base目录与限定词目录:其中,base目录用于定义颜色,圆角或图片;而限定词目录由一个或多个表征应用场景或设备特征的限定词组合而成,包括语言,文字,国家或地区,横竖屏,设备类型和屏幕密度等维度。

  config.json即为应用配置文件。应用的每个HAP的根目录下面都存在一个config.json文件,它主要涵盖了应用的全局配置信息,应用在具体设备上是配置信息和HAP包的配置信息。

  以下给出APP的组成结构的思维导图:

【木棉花】知识分享——HarmonyOS APP和HAP的组成(上)-鸿蒙开发者社区

   值得一提的是:一个APP中可以包含多个HAP,但必须含有Entry.HAP;一个APP可包含多个Feature.HAP,也可以不包含Feature.HAP。并且,只有包含Ability的HAP才能独立运行,图中的FeatureB.hap与FeatureC.hap内不含Ability,故它们无法独立运行。另外,我们由图可以得出,HAP由一个或多个Ability组成。

 结语

本期的分享就先到这里了,鉴于笔者能力有限,文章如有错误和不足之处,希望读者批评指正。

【木棉花】知识分享——HarmonyOS APP和HAP的组成(上)-鸿蒙开发者社区

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
已于2022-1-23 23:36:48修改
6
收藏 5
回复
举报
2条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

谢谢,文章很有帮助

回复
2022-1-24 10:30:52
wx66124eda1e397
wx66124eda1e397

写得很好,一下子就理清了关系

回复
2024-4-7 15:46:22
回复
    相关推荐