购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 开发基础知识

2.2.1 应用基础知识

1.App

HarmonyOS的应用软件包以App Pack(Application Package,简称App)形式发布,它由一个或多个HAP(HarmonyOS Ability Package),以及描述每个HAP属性的pack.info文件组成。HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开。

一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包,可分为Entry和Feature两种模块类型,如图2-39所示。

图2-39 HAP组成

Entry:应用的主模块。在一个App中,对于同一设备类型,必须有且只有一个Entry类型的HAP,可独立安装运行。

Feature:应用的动态特性模块。一个App可以包含一个或多个Feature类型的HAP,也可以不包含。只有包含Ability的HAP才能够独立运行。

2.Ability

Ability是应用所具备的能力的抽象,一个应用可以包含一个或多个Ability。Ability分为两种类型:FA(Feature Ability)和PA(Particle Ability)。FA/PA是应用的基本组成单元,能够实现特定的业务功能。FA有UI界面,而PA无UI界面。

3.库文件

库文件是应用依赖的第三方代码(例如so、jar、bin、har等二进制文件),存放在libs目录中。

4.pack.info

pack.info描述应用软件包中每个HAP的属性,由IDE编译生成,应用市场根据该文件进行拆包和HAP的分类存储。HAP的具体属性包括:

■delivery-with-install:表示该HAP是否支持随应用安装。true表示支持随应用安装;false表示不支持随应用安装。

■name:HAP文件名。

■module-type:模块类型,entry或feature。

■device-type:表示支持该HAP运行的设备类型。

5.HAR

HAR(HarmonyOS Ability Resources)可以提供构建应用所需的所有内容,包括源代码、资源文件和config.json文件。HAR不同于HAP,HAR不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。

2.2.2 应用配置文件

应用的每个HAP的根目录下都存在一个config.json配置文件,文件内容主要涵盖以下三个方面:

■应用的全局配置信息,包含应用的包名、生产厂商、版本号等基本信息。

■应用在具体设备上的配置信息,包含应用的备份恢复、网络安全等能力。

■HAP包的配置信息,包含每个Ability必须定义的基本属性(如包名、类名、类型以及Ability提供的能力),以及应用访问系统或其他应用受保护部分所需的权限等。

配置文件config.json采用JSON文件格式,其中包含了一系列配置项,每个配置项由属性和值两部分构成:

■属性。属性的出现顺序不分先后,且每个属性最多只允许出现一次。

■值。每个属性的值为JSON的基本数据类型(数值、字符串、布尔值、数组、对象或者null类型)。关于属性值需要引用资源文件的情况,可参见2.2.3节。

关于配置文件中元素的配置内容,详见华为官方文档( https://developer.harmonyos.com/cn/docs/documentation/doc-guides/basic-config-file-elements-0000000000034463 ),关于配置文件的具体使用会在后面项目案例中用到的时候穿插讲解。

2.2.3 应用资源文件

应用资源文件(字符串、图片、音频等)统一存放于resources目录下,便于开发者使用和维护。resources目录包括两大类目录,一类为base目录与限定词目录,另一类为rawfile目录。

资源目录示例如图2-40所示。

图2-40 资源目录示例

base目录与限定词目录下面可以创建资源组目录(包括element、media、animation、layout、graphic、profile),用于存放特定类型的资源文件,详见图2-41。

关于资源文件的使用,详见华为官方文档( https://developer.harmonyos.com/cn/docs/documentation/doc-guides/basic-resource-file-example-0000001051733014 ),关于资源文件的具体使用会在后面项目案例中用到的时候穿插讲解。

图2-41 资源组目录

2.2.4 工程管理

1.工程结构介绍

(1)HarmonyOS App工程结构

在进行HarmonyOS应用开发前,你应该掌握HarmonyOS应用的逻辑结构(见图2-42)。

图2-42 HarmonyOS App工程结构

HarmonyOS应用以App Pack的形式发布,它是由一个或多个HAP以及描述App Pack属性的pack.info文件组成。

一个HAP在工程目录中对应一个Module,它由代码、资源、第三方库及应用配置文件组成,可以分为Entry和Feature两种类型。

HAP是Ability的部署包。HarmonyOS应用代码围绕Ability组件展开,它是由一个或多个Ability组成。Ability分为两种类型:FA(元程序)和PA(元服务)。

(2)工程目录结构

Java工程目录结构如图2-43所示。

图2-43 Java工程目录结构

以下是该目录结构中部分目录和文件的说明:

■.gradle:Gradle配置文件,由系统自动生成,一般情况下不需要进行修改。

■entry:默认启动模块(主模块),开发者用于编写源码文件以及开发资源文件的目录。

■entry>libs:用于存放entry模块的依赖文件。

■entry>src>main>Java:用于存放Java源码。

■entry>src>main>resources:用于存放应用所用到的资源文件,如图形、多媒体、字符串、布局文件等(见图2-44)。关于资源文件的详细说明,请参考资源文件的分类(见2.2.3节)。

图2-44 资源文件说明

■entry>src>main>config.json:HAP清单文件,详细说明请参考config.json配置文件的介绍。

■entry>src>test:编写代码单元测试代码的目录,运行在本地Java虚拟机(JVM)上。

■entry>.gitignore:标识Git版本管理需要忽略的文件。

■entry>build.gradle:entry模块的编译配置文件。

JS工程目录结构如图2-45所示。

图2-45 JS工程目录结构

以下是该目录结构中部分目录和文件的说明:

■common:可选,用于存放公共资源文件,如媒体资源、自定义组件和JS文档等。

■i18n:可选,用于存放多语言的json文件,可以在该目录下定义应用在不同语言系统下显示的内容,如应用文本词条、图片路径等。

■pages:pages文件夹下可以包含1个或多个页面,每个页面都需要创建一个文件夹(如图2-45中的index)。页面文件夹下主要包含3种文件类型,即css、js和hml文件。

■pages>index>index.hml文件:hml文件定义了页面的布局结构、使用到的组件,以及这些组件的层级关系。

■pages>index>index.css文件:css文件定义了页面的样式与布局,包含样式选择器和各种样式属性等。

■pages>index>index.js文件:js文件描述了页面的行为逻辑,此文件里定义了页面里所用到的所有逻辑关系,比如数据、事件等。

■resources:可选,用于存放资源配置文件,比如全局样式、多分辨率加载等配置文件。

■app.js:全局的JavaScript逻辑文件和应用的生命周期管理。

2.适配历史工程

由于最新版本的HarmonyOS SDK对应的API版本发生了跃迁,原有的API Version 3变成了API Version 4,原有的API Version 4变成了当前的API Version 5。因此,使用最新版本的DevEco Studio打开历史工程,需要对历史工程进行适配;如果历史工程未做适配,则会导致工程出现运行错误。

在打开历史工程前,建议先点击Help>Check for Updates,检查并升级DevEco Studio至最新版本;点击Tools>SDK Manager,检查并升级SDK及工具链版本至最新版本。

使用DevEco Studio打开历史工程,会提示将历史工程进行升级适配。点击Update,工具会自动修改工程中的配置信息,包括:

■升级config.json和build.gradle中的API Version。

■升级编译构建插件版本为2.4.2.4。

■升级config.json中的releaseType字段的值为Beta1。

■在build.gradle中添加OHOS测试框架的依赖。

工程升级前后的config.json关键字段对比如图2-46所示。

图2-46 工程升级前后的config.json关键字段对比

3.在工程中管理模块

模块(Module)是HarmonyOS应用的基本功能单元,包含了源代码、资源文件、第三方库及应用配置文件,每一个模块都可以独立编译和运行。一个HarmonyOS应用通常会包含一个或多个模块,因此,可以在工程中创建多个模块,每个模块分为Ability和Library(HarmonyOS Library和Java Library)两种类型。

从前面关于HarmonyOS工程的介绍可知,在一个App中,对于同一类型设备有且只有一个Entry模块,其余模块的类型均为Feature。因此,在创建一个类型为Ability的模块时,遵循如下原则:

■若新增模块的设备类型为“已有设备”,则模块的类型将自动设置为Feature。

■若新增模块的设备类型为“当前还没有创建模块”,则模块的类型将自动设置为Entry。

(1)新增模块

通过如下两种方法,在工程中添加新的模块。

方法1:鼠标移到工程目录顶部,点击鼠标右键,选择New>Module,开始创建新的模块。

方法2:在菜单栏选择File>New>Module,开始创建新的模块。

在New Project Module界面中,选择模块对应的设备类型和模板(见图2-47)。

图2-47 在工程中添加新的模块(1)

点击Next,在模块配置页面设置新增模块的基本信息(见图2-48)。

模块类型为Ability或者HarmonyOS Library时,请根据如下内容进行设置,然后点击Next(见图2-48)。

■Application/Library name:新增模块所属的类名称。

■Module Name:新增模块的名称。

■Module Type:仅模块类型为Ability时存在,工具自动根据设备类型下的模块进行设置,设置规则请参考Ability的模块类型设置原则。

■Package Name:软件包名称,可以点击Edit修改默认包名称,须全局唯一。

■Compatible SDK:兼容的SDK版本。

图2-48 在工程中添加新的模块(2)

模块类型为Java Library时,请根据如下内容进行设置,然后点击Finish完成创建(见图2-49)。

图2-49 在工程中添加新的模块(3)

■Library name:Java Library类名称。

■Java package name:软件包名称,可以点击Edit修改默认包名称,须全局唯一。

■Java class name:Java类文件名称。

■Create .gitignore file:是否自动创建.gitignore文件,勾选表示创建。

设置新增Ability的Page Name。若该模块的类型为Ability,则还需要设置Visible参数,表示该Ability是否可以被其他应用所调用。

■勾选(true):可以被其他应用调用。

■不勾选(false):不能被其他应用调用。

点击Finish,等待创建完成后,可以在工程目录中查看和编辑新增的模块。

(2)删除模块

为防止开发者在删除模块的过程中,误将其他模块删除,DevEco Studio提供统一的模块管理功能,需要先在模块管理中移除对应的模块后,才允许删除。

在菜单栏中选择File>Project Structure>Modules,选择需要删除的模块,点击减号按钮,然后在弹出的对话框中点击Yes,如图2-50所示。

图2-50 删除模块

然后,在工程目录中选中该模块,点击鼠标右键,选中Delete,并在弹出的对话框中点击Delete。 rwA8oL2MpjGxW4aT9NBS8kWCbMGJeDaW58u3DN2edJPf6cWhZjhN7VVlRxTHQwKp

点击中间区域
呼出菜单
上一章
目录
下一章
×