框架层-deepseek 鸿蒙
OpenHarmony的架构第三层:框架层。框架层是承上启下的一层,它为应用开发提供了统一的、高效的开发框架和工具。下面详细讲解框架层的组成和核心知识。
框架层概述
框架层位于系统服务层之上,应用层之下。它的主要目的是让应用开发者能够更轻松、更高效地开发应用程序,而无需关心底层系统服务的复杂细节。框架层提供了多种开发语言的支持,并封装了丰富的UI组件、能力接口和开发范式。
框架层主要包括以下几个关键部分:
-
Ability框架:提供应用开发的基本能力单元。
-
UI框架:提供声明式UI开发范式和各种UI组件。
-
多语言运行时:支持ArkTS、JS和C/C++等多种开发语言。
-
其他框架能力:如事件通知、资源管理等。
下面我们逐一详细讲解。
1. Ability框架
在OpenHarmony中,Ability是应用的基本组成单元,是系统调度应用的最小单元。一个应用可以由一个或多个Ability组成。Ability分为两种类型:
-
Page Ability:具有用户界面,用于与用户进行交互。
-
Service Ability:没有用户界面,用于在后台运行任务。
此外,还有一种Data Ability,用于跨应用共享数据。
核心概念:
-
生命周期:Ability框架管理着Ability的完整生命周期,包括创建、显示、隐藏、销毁等状态。开发者需要了解并正确处理生命周期的回调。
-
调度与迁移:在分布式环境下,Ability可以在不同设备间迁移和调度。例如,一个Ability在设备A上启动,可以迁移到设备B上继续运行。
学习要点:
-
学会如何创建Page Ability和Service Ability。
-
理解Ability的生命周期回调方法,并知道在何时调用。
-
了解如何实现Ability的跨设备迁移。
2. UI框架
OpenHarmony的UI框架提供了两种开发范式:
-
基于JS的类Web开发范式:使用hml、css和js文件来开发界面,类似于Web开发,适合传统前端开发者。
-
声明式UI开发范式(ArkUI):这是OpenHarmony主推的开发方式,使用ArkTS语言,提供更简洁、更高效的UI开发体验。
声明式UI(ArkUI)核心特点:
-
声明式描述:使用描述性的语法来声明UI组件,而不是命令式地操作UI组件树。
-
组件化:提供了丰富的内置组件(如按钮、文本、输入框等)和容器组件(如栅格、列表、滑动器等),并且支持自定义组件。
-
状态管理:当状态发生变化时,UI会自动更新。开发者只需关心数据,UI会根据数据状态自动渲染。
-
布局与动画:提供了灵活的布局系统(如弹性布局、相对布局等)和丰富的动画效果。
学习要点:
-
掌握声明式UI的语法,学会使用ArkTS来开发UI。
-
熟悉常用的UI组件和容器组件的使用。
-
理解状态管理机制,学会使用@State、@Prop等装饰器。
-
学会使用动画和手势处理。
3. 多语言运行时
OpenHarmony支持多种编程语言,使得开发者可以选择自己熟悉的语言进行开发。
-
ArkTS运行时:ArkTS是OpenHarmony首推的应用开发语言,它是TypeScript的超集,在TypeScript的基础上增加了声明式UI和状态管理等功能。ArkTS运行时负责执行ArkTS代码。
-
JS运行时:支持使用JavaScript进行应用开发,使用QuickJS作为JS引擎。
-
C/C++运行时:对于高性能要求或底层操作,可以使用C/C++开发。OpenHarmony提供了NAPI(Native API)框架,使得JS/ArkTS代码可以调用C/C++编写的原生模块。
学习要点:
-
重点学习ArkTS语言,因为这是OpenHarmony应用开发的主流和未来。
-
了解如何使用NAPI进行C/C++与ArkTS/JS的交互。
4. 其他框架能力
框架层还提供了许多其他重要能力,包括但不限于:
-
事件通知:提供了应用内和应用间的事件通信机制。
-
资源管理:统一管理字符串、图片、布局文件等资源,并支持多设备适配(如不同屏幕密度、语言等)。
-
窗口管理:管理应用窗口的创建、销毁、大小调整等。
-
权限管理:提供权限申请和检查的API。
总结与学习建议
框架层知识总结:
-
Ability框架是应用开发的基础,理解Ability的生命周期和分布式调度是关键。
-
UI框架是应用开发的核心,尤其是声明式UI范式,需要重点掌握。
-
多语言运行时让开发更灵活,但ArkTS是主推语言,应作为学习重点。
-
其他框架能力为应用开发提供了便利,需要在实际开发中逐步掌握。
如何深入学习:
-
官方文档:阅读OpenHarmony官方文档中关于应用开发的部分。
-
动手实践:
-
使用DevEco Studio创建多个Ability的应用,体验Ability的生命周期。
-
使用ArkUI声明式开发范式编写UI界面,尝试使用各种组件和布局。
-
学习状态管理,实现一个简单的数据绑定和界面更新。
-
尝试使用C/C++编写一个简单的原生模块,并通过NAPI在ArkTS中调用。
-
-
参考示例:OpenHarmony提供了大量的示例代码(Sample),通过阅读和运行这些示例,可以快速掌握框架层的使用方法。
框架层是应用开发者最直接接触的部分,熟练掌握框架层是成为一名合格的OpenHarmony应用开发者的关键。祝你学习顺利!
好的,我们继续深入OpenHarmony架构的第三层——框架层。这一层是应用开发者最直接打交道的部分,它提供了构建应用程序所需的一切工具、接口和运行环境。
框架层概览
框架层位于系统服务层之上,应用层之下。它的核心作用是为应用开发者提供一套标准、高效、易用的开发范式和编程接口,让开发者能够专注于业务逻辑,而无需关心复杂的底层系统服务细节。
如果说系统服务层提供了各种"原材料"(系统能力),那么框架层就是将这些原材料组合成标准"预制件"和"施工蓝图"(API和框架),让开发者能快速、规范地"盖房子"(开发应用)。
框架层主要由三大核心部分组成,其架构与关系如下图所示:

1. Ability框架:应用的基本组成单元
在OpenHarmony中,Ability是应用的基本组成单元,是系统调度应用的最小单元。你可以将一个Ability理解为一个独立的功能模块或页面。
Ability的三种类型:
-
Page Ability(页面Ability)
-
功能:提供与用户交互的界面。一个Page Ability对应一个UI页面。
-
生命周期:框架层管理着其完整的生命周期,包括
onCreate(创建)、onForeground(进入前台)、onBackground(进入后台)、onDestroy(销毁)等状态。开发者需要在对应的回调函数中编写逻辑。 -
示例:一个新闻应用的主列表页、详情页都是一个独立的Page Ability。
-
-
Service Ability(服务Ability)
-
功能:在后台运行,没有用户界面。用于执行长时间运行的任务(如音乐播放、文件下载、数据同步)。
-
特点:它可以在不打开应用界面的情况下被其他Ability启动或连接。
-
示例:一个音乐播放器的播放核心就是一个Service Ability,即使你关闭了播放界面,音乐仍能继续播放。
-
-
Data Ability(数据Ability)
-
功能:用于应用间的数据共享。它对外提供统一的数据访问接口(如增、删、改、查),其他应用在获得授权后可以通过这些接口来操作此应用的数据。
-
示例:一个联系人应用可以提供一个Data Ability,允许短信应用在发送短信时查询联系人信息。
-
Ability框架的核心价值:
-
组件化开发:促使开发者将应用拆分为高内聚、低耦合的功能模块。
-
统一的生命周期管理:系统可以更高效地调度和管理应用资源,尤其在内存紧张时,能正确地销毁后台Ability以释放资源。
-
跨设备流转基石:分布式调度服务(DMS)调度和迁移的基本单位就是Ability。当你将视频从手机流转到电视时,实际是在电视上启动了一个新的Page Ability来接管播放任务。
2. UI框架:ArkUI
ArkUI是OpenHarmony推出的新一代声明式UI开发框架,是构建应用界面的核心。它提供了两种开发范式,但官方主推声明式范式。
a) 声明式UI开发范式(主推)
这是OpenHarmony UI开发的现在和未来,其核心理念是 "描述UI应该是什么样子",而不是命令式地一步步"如何构建UI"。
-
核心特点:
-
简洁自然:使用接近自然语言的语法来描述UI。
-
数据驱动:UI随数据状态自动更新。当应用中的数据发生变化时,框架会自动更新与之绑定的UI部分。
-
状态管理:提供了一系列装饰器(如
@State,@Prop,@Link)来管理组件状态,当状态变化时,组件会自动重新渲染。
-
-
代码示例(ArkTS):
typescript
// 一个简单的计数器组件 @Entry @Component struct MyComponent { @State count: number = 0 // 使用@State装饰器声明一个响应式数据 build() { // 描述UI结构 Column() { Text(`Count: ${this.count}`) // 文本内容绑定count .fontSize(30) Button('Click Me') .onClick(() => { this.count++ // 点击按钮,count发生变化,Text组件会自动更新 }) } .width('100%') .height('100%') } }-
可以看到,开发者只需要声明
count数据和使用build方法描述UI,当count变化时,Text组件会自动更新。开发者无需手动调用类似setText()的方法。
-
b) 兼容的JS UI范式(类Web开发)
这是一种兼容传统的类Web开发方式,使用HTML、CSS和JavaScript来构建UI,更适合有Web开发背景的团队快速上手。但功能性和性能不如声明式范式,未来会逐步淡出。
3. 多语言运行时
框架层提供了对多种开发语言的支持,让开发者可以根据场景和偏好选择最合适的语言。
-
ArkTS(首选与未来)
-
是什么:ArkTS是OpenHarmony首推的应用开发语言。它是TypeScript的超集,在继承TS所有特性的基础上,扩展了声明式UI和状态管理等功能。
-
优势:
-
类型安全:静态类型检查,能在开发阶段发现更多错误。
-
性能更优:相比JS,运行效率更高。
-
开发体验好:完美契合ArkUI声明式范式。
-
-
-
JavaScript(兼容与过渡)
-
支持情况:主要用于兼容旧的JS UI范式开发。
-
运行时:使用轻量级的QuickJS引擎作为JS运行时。
-
-
C/C++(高性能与底层)
-
使用场景:用于开发对性能要求极高的模块,如游戏引擎、高性能算法、图形处理等。
-
交互方式:通过NAPI框架,使得C/C++代码可以被ArkTS/JS代码方便地调用,实现了高级语言与底层原生代码的互通。
-
总结与学习建议
框架层知识总结:
-
角色定位:框架层是应用开发的"工具箱"和"脚手架",定义了OpenHarmony应用的开发模式。
-
三大支柱:
-
Ability框架:定义了应用的组织结构。
-
ArkUI框架:定义了UI的构建方式(声明式UI是核心)。
-
多语言运行时:提供了开发工具(ArkTS是首选)。
-
如何深入学习:
-
第一步:掌握语言基础
-
系统学习 ArkTS 语言,特别是其相对于TypeScript的扩展部分(如装饰器)。
-
-
第二步:理解Ability生命周期
-
在DevEco Studio中创建不同类型的Ability,通过日志理解其生命周期的变化。
-
-
第三步:精通声明式UI开发
-
这是学习的重中之重。反复练习,理解其"数据驱动"的思想。
-
掌握各种内置组件(
Button,Text,Image等)和布局组件(Column,Row,Stack等)的使用。 -
深入理解状态管理装饰器(
@State,@Prop,@Link,@Provide,@Consume等)的区别和使用场景。
-
-
第四步:动手实践
-
从简单的UI页面开始,逐步完成一个完整的应用,如"待办事项"或"天气应用"。
-
在过程中,学习如何使用框架层提供的其他能力,如路由导航、网络请求、数据存储等。
-
框架层是通往OpenHarmony应用开发的大门,而ArkTS + 声明式UI是打开这扇门的金钥匙。祝你学习顺利!
更多推荐

所有评论(0)