在第3章DevEco Studio会为我们自动创建如图4-1所示的目录结构的工程源码。那么这些目录结构到底有什么含义,每个文件的作用是什么?这些都是接下来我们要探索的话题。
本节将探索App这个话题。
首先,我们来认识App。
App就是应用,是Application的简写。比如,在Android手机上安装一个软件,这个软件就称为应用。应用泛指运行在设备的操作系统之上,为用户提供特定服务的程序。
在HarmonyOS上运行的应用有两种形态:
· 传统方式需要安装的应用。
· 提供特定功能,免安装的应用,即原子化服务。
图4-1 DevEco Studio自动创建的工程
Android平台是以APK(Android Application Package,Android应用程序包)形式来发布的,当我们要在Android手机上安装一个App时,首先要找到这个App对应的APK安装包,执行该APK安装包就能安装App了。
同理,HarmonyOS的应用软件包以App Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)以及描述每个HAP属性的pack.info组成的。HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开。
一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包,可分为entry和feature两种模块类型,如图4-2所示。
图4-2 App逻辑视图
其中:
· entry:应用的主模块。一个App中,对于同一设备类型必须有且只有一个entry类型的HAP,可独立安装运行。
· feature:应用的动态特性模块。一个App可以包含一个或多个feature类型的HAP,也可以不包含。只有包含Ability的HAP才能够独立运行。
我们在应用的build目录下可以找到名为entry-debug-rich-unsigned.hap或者entry-debug-rich-signed.hap的文件,如图4-3所示。这些.hap文件就是HarmonyOS的应用软件包。
图4-3 App逻辑视图
在代码层次,我们可以看到如图4-4所示的MyApplication,这就是整个应用的入口。
图4-4 App逻辑视图
从代码可以看到,MyApplication继承自AbilityPackage。AbilityPackage用来初始化每个HAP的基类。