> 文档中心 > OpenHarmony APP开发基础

OpenHarmony APP开发基础


引言

本文从OpenHarmony应用包的结构、Ability开发、UI开发、OpenHarmony应用工程的目录结构和编程语言这五个方面对从事OpenHarmony应用开发所需要具备的基础知识进行了梳理。

参考资料:

OpenHarmony工程介绍https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ohos-project-overview-0000001218440650快速开始、开发https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/application-dev-guide.md/入门、开发https://developer.harmonyos.com/cn/docs/documentation/doc-guides/document-outline-js-ets-0000001282486428

一、鸿蒙应用包的结构

1、鸿蒙应用的发布形态是 APP Pack(Application Package,简称APP),它是由一个或多个HAP(Harmony Ability Package)包以及描述APP Pack属性的pack.info文件(由IDE编译时自动生成)组成。

在这里插入图片描述

2、每一个HAP都对应鸿蒙应用工程目录中的一个Module,例如:下图所示鸿蒙工程中名为entry的文件夹就是一个Module。在编译鸿蒙应用工程的时候,每个Module都可以被编译成一个HAP。

在这里插入图片描述

3、鸿蒙APP中的HAP有两种类型:Entry HAP、Feature HAP。

(1)Entry HAP

Entry型HAP是APP中的主模块(入口模块),相当于针对特定设备的应用程序入口,当在某个设备中打开APP的时候,就会首先运行针对这种设备的Entry HAP。这也就意味着,在安装到设备上的APP中有且只有一个Entry HAP;但在鸿蒙工程中可以存在多个Entry型的Module,以适应不同类型的设备或者同一类型不同型号的设备,如下图所示。

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/add_new_module-0000001053223741#section18939175113911

在这里插入图片描述

另外,Entry HAP可以独立在设备中安装和运行。

(2)Feature HAP

Feature型HAP是APP中的特性模块(可选模块),一个APP种可以有一个或多个Feature HAP,也可以没有。只有包含Ability的Feature HAP才能在设备中独立运行。

4、一个HAP(Module)是由Ability、资源、第三方库及配置文件组成的。

(1)Ability

一个HAP中可以包含一个或多个Ability,也可以不包含Ability。

Ability有两种模型:FA模型、Stage模型,详见本文第二部分:Ability开发。

Ability是鸿蒙应用所具备的能力的抽象,是鸿蒙应用的核心部分,是系统调度应用的最小单元。DevEco Studio提供了很多Ability模板供开发者使用。我们开发鸿蒙应用时,主要就是编写Ability的代码。下图红框中的部分就是一个FA模型中Page Ability的代码:

在这里插入图片描述

(2)库文件

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

(3)资源文件

应用所需用到的资源文件包括字符串、图片、音频等,存放于resources目录下,便于开发者使用和维护,详见资源文件的分类:

https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/quick-start/basic-resource-file-categories.md/https://developer.harmonyos.com/cn/docs/documentation/doc-guides/basic-resource-file-categories-0000001052066099

(4)配置文件

在配置文件中汇集了HAP的各种配置信息。针对HAP中包含的Ability所使用的模型(FA模型、Stage模型),HAP的配置文件也不一样。详见:

应用包结构说明(FA模型)https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/quick-start/package-structure.md/应用包结构说明(Stage模型)https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/quick-start/stage-structure.md/

二、Ability开发

Ability框架概述https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/ability/ability-brief.md/

Ability有两种模型:FA模型、Stage模型。

1、FA模型

API 8及其更早版本的应用程序只能使用FA模型进行开发。

FA模型将Ability分为FA(Feature Ability)和PA(Particle Ability)两种类型。

FA(Feature Ability)支持Page Ability,一个Page Ability可以含有一个或多个页面(即Page);PA支持Service Ability、Data Ability、Form Ability。

FA(Feature Ability)是有UI界面的(详见本文第三部分:UI开发);PA(Particle Ability)没有UI界面。

https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/ability/fa-brief.md/

2、Stage模型

从API 9开始,Ability框架引入了Stage模型作为第二种应用框架形态,Stage模型将Ability分为Ability和ExtensionAbility两大类,其中ExtensionAbility又被扩展为ServiceExtensionAbility、FormExtensionAbility、DataShareExtensionAbility等等一系列ExtensionAbility,以便满足更多的使用场景。

https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/ability/stage-brief.md/

三、UI开发

UI框架https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/quick-start/start-overview.md/#ui%E6%A1%86%E6%9E%B6

OpenHarmony提供了一套UI开发框架,即方舟开发框架(ArkUI框架)。方舟开发框架可为开发者提供应用UI开发所必需的能力,比如多种组件、布局计算、动画能力、UI交互、绘制等。

方舟开发框架针对不同目的和技术背景的开发者提供了两种开发范式基于JS扩展的类Web开发范式(简称“类Web开发范式”)基于TS扩展的声明式开发范式(简称“声明式开发范式”) 。以下是两种开发范式的简单对比。

开发范式名称 语言生态 UI更新方式 适用场景 适用人群
类Web开发范式 JS语言 数据驱动更新 界面较为简单的程序应用和卡片 Web前端开发人员
声明式开发范式 扩展的TS语言(eTS) 数据驱动更新 复杂度较大、团队合作度较高的程序 移动系统应用开发人员、系统应用开发人员

对于JS语言开发时,低代码方式在DevEco Studio V2.2 Beta1及更高版本中支持。

对于eTS语言开发,低代码方式在DevEco Studio V3.0 Beta3及更高版本中支持。

方舟开发框架概述https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/ui/arkui-overview.md/基于JS扩展的类Web开发范式https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/ui/ui-js-overview.md/基于TS扩展的声明式开发范式https://docs.openharmony.cn/pages/v3.1/zh-cn/application-dev/ui/ui-ts-overview.md/

四、鸿蒙应用工程的目录结构

根据Ability的模型(FA、Stage)和编程语言(eTS、JS、C++),OpenHarmony APP的工程的目录结构有以下5种:

1、eTS工程目录结构(FA模型)

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ohos-project-overview-0000001218440650#section4154183910141

2、JS工程目录结构(FA模型)

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ohos-project-overview-0000001218440650#section199109862914

3、C++工程目录结构(FA模型)

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ohos-project-overview-0000001218440650#section3732132312179

4、eTS工程目录结构(Stage模型)

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ohos-project-overview-0000001218440650#section56487581904

5、C++工程目录结构(Stage模型)

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ohos-project-overview-0000001218440650#section11993659193917

五、编程语言

从事鸿蒙应用开发,在C++工程中,要用到C++语言;在JS工程中,除了要用到JavaScript语言,还要用到HML和CSS;在eTS工程中,要用到eTS语言。

eTS语言是TS(Type Script)语言的超集,TS又是JavaScript的超集。

HML语法参考

https://gitee.com/openharmony/docs/blob/OpenHarmony-3.1-Release/zh-cn/application-dev/ui/js-framework-syntax-hml.mdhttps://developer.harmonyos.com/cn/docs/documentation/doc-guides/js-framework-syntax-hml-0000000000611413

CSS语法参考

https://gitee.com/openharmony/docs/blob/OpenHarmony-3.1-Release/zh-cn/application-dev/ui/js-framework-syntax-css.mdhttps://www.runoob.com/css/css-tutorial.html https://www.runoob.com/cssref/css-reference.html

JS语法参考

https://gitee.com/openharmony/docs/blob/OpenHarmony-3.1-Release/zh-cn/application-dev/ui/js-framework-syntax-js.mdhttps://www.runoob.com/js/js-tutorial.html

TypeScript语法参考

https://www.runoob.com/typescript/ts-tutorial.htmlhttps://www.runoob.com/manual/gitbook/TypeScript/_book/