前言
鸿蒙的应用程序工程结构分为FA
和Stage
两种模型结构,这两种模型的应用包结构并不相同。
- FA模型:API 7开始支持的模型,目前已不是官方主推模型,所以不再做详细介绍,感兴趣的读者可以另外了解。
- Stage模型:支持API 9及以上版本,也是未来主推的模型,所以我们主要学习Stage模型。
需要注意的是,JS工程只支持FA模型,所以打算以JS作为开发语言的同学还是要去学习一下FA模型
接下来我们学习一下鸿蒙开发相关的基础知识,并介绍Stage模型的应用程序包结构。
一、基础知识
1、应用程序包
首先我们来了解一个概念:用户应用程序。用户应用程序泛指运行在设备的操作系统之上,为用户提供特定服务的程序,简称“应用”。一个应用所对应的软件包文件,称为“应用程序包”。
“应用程序包”也就是我们所说的“应用程序工程”,也有人叫项目工程包,或者其他类似叫法,我们知道是同个概念就好。
鸿蒙应用/服务发布形态是APP Pack(Application Package),这是由一个或多个HAP(Harmony Ability Package)包以及描述APP Pack属性的pack.info文件组成的。
2、UI框架
鸿蒙的UI框架是方舟开发框架(ArkUI框架),方舟开发框架为开发者提供应用UI开发所必需的能力,比如多种组件、布局计算、动画能力、UI交互、绘制等。
方舟开发框架针对不同目的和技术背景的开发者提供了两种开发范式,分别是基于ArkTS的声明式开发范式(简称“声明式开发范式”)和兼容JS的类Web开发范式(简称“类Web开发范式”)。
3、Stage应用模型
应用模型是鸿蒙为开发者提供的应用程序所需能力的抽象提炼,提供了应用程序必备的组件和运行机制。有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。
个人理解模型是鸿蒙应用开发的一种逻辑结构组织形式,在这个模型下的应用程序包具有相对固定的结构。
下面附上一张鸿蒙官方的Stage模型应用程序包结构图。
鸿蒙的Module、Entry、Feature、HAP、HAR、HSP等概念的详细含义和相关知识后面再另写一篇做专门介绍
这种应用模型被称为“Stage模型”是因为提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”。
关于“Stage模型”其实还有很多细节的知识需要学习,因为本篇只是浅显的介绍鸿蒙的应用程序包结构知识,所以不做展开了,后面会另外做详细的讲解。
二、Stage模型的应用程序包结构
Stage模型的项目工程目录结构如下
-
AppScope :AppScope目录是由DevEco Studio自动生成的,不可更改。
- AppScope >app.json5: 用于声明应用的全局配置信息,包括应用Bundle名称、应用名称、应用图标、应用版本号等。(接触过Android开发的同学应该会发现这里的功能有点像Android的AndroidManifest.xml文件中关于application声明的部分内容,又包含了部分build.gradle的内容,其实
最新的HarmonyOS NEXT开发跟Android开发已经大相径庭了,差异还是比较大的
)。 - AppScope > resources : 用于存放应用需要用到的资源文件。
- AppScope >app.json5: 用于声明应用的全局配置信息,包括应用Bundle名称、应用名称、应用图标、应用版本号等。(接触过Android开发的同学应该会发现这里的功能有点像Android的AndroidManifest.xml文件中关于application声明的部分内容,又包含了部分build.gradle的内容,其实
-
entry:应用/服务模块,编译构建生成一个HAP。
-
src > main > ets:用于存放Module的ArkTS源码文件(.ets文件)。
-
src > main > ets > entryability:应用/服务的入口文件。
-
src > main > ets > pages:应用/服务包含的页面。
-
src > main > resources:用于存放应用/服务模块所用到的资源文件,如图形、多媒体、字符串、布局文件等。
resources文件夹下部分文件示意图
-
src > main > module.json5:于声明Module基本信息、支持的设备类型、所含的组件信息、运行所需申请的权限等。
-
build-profile.json5:当前的模块信息、编译信息配置项,包括buildOption、targets配置等。
-
hvigorfile.ts:模块级编译构建任务脚本。
-
oh-package.json5:描述三方包的包名、版本、入口文件(类型声明文件)和依赖项等信息。
-
-
oh_modules :用于存放三方库依赖信息,包含应用/服务所依赖的第三方库文件。
-
build-profile.json5:应用级配置信息,包括签名、产品配置等。
-
hvigorfile.ts:应用级编译构建任务脚本。
-
oh-package.json5:描述全局配置,如:依赖覆盖(overrides)、依赖关系重写(overrideDependencyMap)和参数化配置(parameterFile)等。
细心的同学应该发现了存在多个同名的文件,比如build-profile.json5、hvigorfile.ts、oh-package.json5、resources文件夹等,这是因为一个是Module级的文件,一个是工程级的文件。如果之前做过Android开发,这应该是很好理解的。
总结
今天介绍了鸿蒙的Stage模型应用程序包结构,这是以DevEco Studio的 ArkTS工程(Stage模型) 为模板介绍的,其实鸿蒙的DevEco Studio项目工程还包括 C++工程(Stage模型) 和 JS工程(FA模型) 这两种类型。因为ArkTS工程是主流,所以本文介绍了ArkTS工程的项目工程结构,剩下的两个工程有机会的话会另外撰文编写。
应用程序包在不同阶段有不同的形态,分别为开发态、编译态和发布态,今天介绍的是开发态应用程序结构,剩下的编译态和发布态在学习到相应进度时会另外再做详细介绍。
参考资料: HarmonyOS Developer文档中心