鸿蒙操作系统应用开发实践
上QQ阅读APP看书,第一时间看更新

1.5 HarmonyOS项目分析

1.5.1 项目逻辑视图

首先整体了解一下一个HarmonyOS应用软件的整体项目逻辑视图及模块组成,如图1.38所示。

图1.38 项目逻辑视图

HarmonyOS的应用软件,以App(App Pack)的形式发布,每个App由一个或多个HAP(HarmonyOS Ability Package)及pack.info组成。其中,pack.info用于描述每个HAP的属性,主要包括该HAP是否随应用安装(delivery-with-install)、HAP文件名(name)、HAP模块包类型(module-type)、支持该HAP运行的设备类型(device-type)等。

其中,每个HAP模块包由Ability(Ability是应用具备的能力,HarmonyOS应用代码围绕Ability组件展开,第3章会详细讲解)、第三方库(libs)、资源文件(Resources)及应用配置文件(config.json)组成。HAP模块包分为entry和feature两种类型。

(1)entry:应用的主模块。在一个App中,同一设备类型必须有且仅能有一个entry类型的HAP包,可独立安装运行。

(2)feature:应用的动态类型模块。在一个App中,可以包含一个或多个feature类型的HAP包,也可以不包含,但只有包含Ability的HAP包才能独立运行。

1.5.2 项目结构与文件

现在来看一下之前创建的Hello World项目,项目结构如图1.39所示。这里逐一介绍每个文件的内容。

图1.39 项目结构

1).gradle和idea

这两个文件是由DevEco Studio自动生成的配置文件,一般情况下不需要进行修改。

2)build

build文件夹中包含了一些在编译时自动生成的文件,一般也不需要进行修改。

3)entry

entry是默认启动模块,是项目中的主模块,随后开发中的源码文件和资源文件均在entry中。

4)gradle

目录下包含了gradle wrapper的配置文件。

5).gitignore

该文件用来将指定的目录或文件排除在版本控制之外。

6)build.gradle

项目全局的gradle构建脚本。

7)gradle.properties

项目全局的gradle配置文件,其中配置的属性会影响项目中所有的gradle编译脚本。

8)gradlew和gradlew.bat

这两个文件用来在命令行界面中执行gradle命令,其中,gradlew用于Linux或Mac系统,gradlew.bat用于Windows系统。

9)local.properties

文件用于指定本机中的SDK路径,通常自动生成而无须修改。若更改了本机中的SDK路径,则应对该文件中的路径进行修改。

10)MyApplication.iml

.iml文件是由DevEco Studio自动生成的文件,用来标识这是一个DevEco Studio项目,无须进行修改。

11)settings.gradle

该文件用来表示项目中所有引入的模块。通常在项目中新建一个模块之后,settings.gradle会自动引入该模块。

以上是整个项目的外层目录结构,其中绝大多数为自动生成的文件。entry目录为整个项目的重点,在这里进行主要的应用开发。下面展开entry进行进一步分析。

这里先介绍Java工程下的entry目录结构,如图1.40所示。

图1.40 Java工程下的entry目录结构

1)build

与外层的build文件相似,包含一些在编译时自动生成的文件,一般不需要修改。

2)libs

存放entry模块下的第三方依赖文件。

3)src→main→java

开发者用于编写Java源码文件的存放目录。

4)src→main→resources

开发者用于存放开发资源文件的目录,包括图片、音视频等资源文件。

5)src→main→config.json

应用配置文件。用于声明应用的Ability信息,以及应用所需的权限等信息。

6)src→test

开发者用于编写测试文件的目录。

7).gitignore

用于将entry模块内的指定目录或文件排除在版本控制之外,其作用和外层的.gitignore文件基本一致。

8)build.gradle

entry模块的gradle构建脚本,指定与项目构建相关的配置信息。

9)entry.iml

DevEco Studio自动生成的文件,无须进行修改。

这是Java项目的目录结构,这里也可以创建JS项目,以此来学习JS项目的目录结构。如选择TV设备下的Empty Feature Ability(JS),创建完成后,在项目的目录结构中,除了包括Java项目文件外,还多了JS文件夹及相应文件,如图1.41所示。

图1.41 JS项目目录结构

1)js→default→i18n

i18n是英文单词internationalization的缩写,是“国际化”的简称。i18n文件夹用于存放配置不同语言场景的资源,例如应用文本词条、图片路径等资源。

2)js→default→pages

pages文件夹用于存放多个页面的开发文件,例如图中一个index表示一个页面,每个页面由HML、CSS和JS文件组成。

(1)index.hml: HML模板文件,用来描述当前页面的布局结构,类似于网页中的HTML文件。

(2)index.css: CSS样式文件,用于描述页面样式。

(3)index.js: JS文件,用于处理页面和用户的交互。