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

第2章
鸿蒙的技术模块

在介绍鸿蒙应用开发技巧前,必须要掌握相关概念,这对用户以后的开发工作非常重要。通过了解Ability框架、方舟编译器、Ark UI、应用程序包以及完整的开发流程解析,可以明确自己的开发需求,选择适合自己的开发方式。

2.1 Ability框架

鸿蒙应用实际是通过Ability框架进行开发的,Ability在英文解释中是能力的意思。鸿蒙认为开发一个应用程序,其实是对设备能力的一种实现。

2.1.1 Ability的定义

Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。 一个应用可以具备多种能力(即可以包含多个Ability),HarmonyOS支持应用以Ability为单位进行部署。Ability可以分为FA(Feature Ability)和PA(Particle Ability)两种类型,每种类型为开发者提供了不同的模板,以便实现不同的业务功能。

假如我们要开发一款音乐App,那该App应该包含一个音乐播放的Ability。如果要给这个音乐App添加手表端的功能,那么可以继续添加一个手表端的Ability。当用户安装App时,应用市场可以根据设备类型为用户安装对应的App。

2.1.2 FA的应用开发

FA支持Page Ability。

Page Ability:Page模板是FA唯一支持的模板,用于提供与用户交互的能力。一个Page实例可以包含一组相关页面,每个页面用一个AbilitySlice实例表示。

简单理解就是,开发带有用户界面的App,就需要创建一个Page Ability。

2.1.3 PA的应用开发

PA支持Service Ability和Data Ability。

1)Service模板:用于提供后台运行任务的能力。

2)Data模板:用于对外部提供统一的数据访问抽象。

可见,大量基于后台,而不需要前台界面的App部分,需要使用Service Ability来实现。比如杀毒软件程序就非常适合使用PA进行开发。

2.2 方舟编译器与Ark UI

HarmonyOS 3.0全新提供的方舟编译器(Ark Compiler)用于应用的编译构建。在开发基于Ark UI框架的、跨设备的HarmonyOS应用或服务时,可选择使用方舟编译器。

方舟开发框架(Ark UI)是一套UI开发框架,提供开发者进行应用UI开发时所必需的能力。

2.2.1 方舟(Ark)编译器的概念与作用

方舟编译器(Ark Compiler),作为华为自研的统一编程平台,包含编译器、工具链、运行时等关键部件。 支持高级语言在多种芯片平台的编译与运行;支持多语言联合优化,降低跨语言交互开销;提供更轻量的语言运行时,通过软硬协同充分发挥硬件能效。不同的业务场景、设备、编程语言的支持需求使得方舟编程平台的设计目标是一个语言可插拔、组件可配置的多语言编译运行时。

1.语言可插拔

设计和架构上支持多种语言接入。方舟编译器有能力提供具有高效执行性能和跨语言优势的多语言运行时,也可以在小设备上提供高效内存小的单一语言运行时。

2.组件可配置

方舟编译器具有如下丰富的编译运行时组件系统。

1)执行引擎:解释器、JIT编译器、AOT编译器。

2)丰富的内存管理组件:多种分配器和多种垃圾回收器。

3)各语言独立的运行时:可以支持语言特有实现和语言基础库。

方舟通过定制化配置编译运行时的语言和组件以支持手机、PC、平板电脑、电视、汽车和智能穿戴等多种设备下不同的性能和内存需求。

2.2.2 Ark UI的概念与作用

方舟开发框架,以后简称Ark UI,提供了JavaScript和eTS两种开发语言,进行App UI界面开发,如图2-1所示。

·图2-1 方舟开发框架图

1)页面(page):页面是方舟开发框架最小的调度分割单位。开发者可以将应用设计为多个功能页面,每个页面进行单独的文件管理,并通过路由API实现页面的调度管理,以实现应用内功能的解耦。

2)组件(component):组件是界面搭建与显示的最小单位。开发者通过多种组件的组合,构建出满足自身应用诉求的完整界面。

一个基于Ark UI开发的App,应该包含多个页面,每个页面包含多个组件。这个跟传统的Web界面开发或以Vue为代表的前端开发框架等极为类似。

2.2.3 JS UI与TS UI

类Web开发范式简称JS UI,类声明式开发范式简称TS UI,它们都属于Ark UI。 两种开发方式有不同的地方,也有相同的地方,其对比见表2-1。

表2-1 Ark UI开发方式对比

JS UI和TS UI目前仅支持PA的开发,根据官方的描述,后期会持续开放更多对API接口以及FA的开发特性,如果现阶段项目中需要FA的功能开发,可以使用JS调起FA应用。

2.3 鸿蒙App的基本组成部分

用户应用程序泛指运行在设备的操作系统上,为用户提供特定服务的程序,简称“应用”。

在HarmonyOS上运行的应用,有如下两种形态。

1)传统方式(需要安装)的应用,使用Java、JavaScript、eTS语言开发。

2)提供特定功能,免安装的应用(即原子化服务),主要使用JavaScript语言开发。

2.3.1 应用程序包

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

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

·图2-2 鸿蒙应用的组成图示例

1)Entry:应用的主模块。一个App中,对于同一设备类型,可以有一个或多个Entry类型的HAP来支持该设备类型中不同规格(如API版本、屏幕规格等)的具体设备。如果同一设备类型存在多个Entry模块,则必须配置distroFilter分发规则,使得应用市场在做应用的云端分发时,对该设备类型下不同规格的设备进行精确分发。

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

注意:图2-2中abilities采用单词复数写法,表示可以存在多个Ability。

大多数情况下,无论是使用Java还是JavaScript开发,都是在一个Entry主模块中进行开发。Entry是代码模块,Ability是程序实现的功能逻辑,不要混淆。最直观的感受是,Entry代码模块通过编辑器创建生成代码目录,代码目录内包含下面章节中的文件。Ability可以理解为编写程序的核心代码。

一个应用程序包里面包含Ability、库文件、资源文件、配置文件、pack.info、HAR等。笔者把目录结构对应的模块内容做了注释,如图2-3所示。

·图2-3 鸿蒙应用代码目录结构

2.3.2 配置文件

配置文件(config.json)是应用的Ability信息,用于声明应用的Ability,以及应用所需权限等信息。

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

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

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

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

配置文件的内部结构包含config.json,由App、deviceConfig和module三个部分组成,缺一不可,配置文件的内部结构说明见表2-2。

表2-2 配置文件的基本结构

某款Todo类软件项目配置文件示例代码如下。

在下面官方文档地址中,详细列出了配置文件中各个选项的使用方法。

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/basic-config-file-elements-0000000000034463

配置文件内容非常多,没必要一次性全部掌握,在以后的开发中对涉及的模块会分开进行讲解。

2.3.3 资源文件

应用的资源文件(字符串、图片、音频等)存放于resources目录下,便于开发者使用和维护。

2.3.4 数据管理

HarmonyOS应用数据管理支持单设备的各种结构化数据的持久化,以及跨设备之间数据的同步、共享和搜索功能。开发者通过应用数据管理,能够方便地完成应用程序数据在不同终端设备间的无缝衔接,满足用户跨设备使用数据的一致性体验。

2.3.5 安全管理

1)依据国家《移动互联网应用程序信息服务管理规定》,为了促进鸿蒙生态健康有序发展,保护应用开发者和用户的合法权益,需要每一位HarmonyOS开发者注册账号,并建议同步进行实名认证。实名认证包括个人开发者实名认证和企业开发者实名认证,没有完成实名认证的开发者,无法进行应用上架发布。

2)建议使用官方渠道下载的开发工具。

3)在发布HarmonyOS应用前,可以在本地进行应用调试。HarmonyOS通过数字证书和Profile文件对应用进行管控,只有经过签名的HAP才允许安装到设备上运行。具体请参考配置应用签名信息。

2.4 鸿蒙App开发流程初体验

学完以上的内容,相信读者对鸿蒙开发已经有了初步的认识。在正式进入开发流程之前,还需要了解开发一款完整的鸿蒙应用会具体经历哪些流程。

如果读者已经有其他项目的开发经验,相信对下面的内容应该不会陌生,这应该是绝大多数互联网公司的实际开发流程。如果读者是个代码新手,下面的内容则显得更重要了,熟悉实战项目的开发流程对接下来的学习是至关重要。

2.4.1 应用需求分析

任何一款优秀的产品,必然是要满足目标用户的需求,鸿蒙应用也不例外。

结合鸿蒙应用分布式的特点,可以让开发者在以前很多熟悉的场景下,对已有的应用进行扩展。日常工作中免不了经常给同事发送文件。一些小的文件传输较为方便,如果是比较大的文件,用微信或者QQ进行传输也非常麻烦,如果是视频或者图片还会碰到被压缩的情况。而利用鸿蒙里面的分享功能可以快速地发送大容量的文件给同事,所以大家是不是可以期待微信鸿蒙版赶紧上线呢?

在鸿蒙文档里面有个CodeLabs的鸿蒙应用特性案例库,用户可以下载里面的代码,结合自己应用的特点,进行更多新特性功能的开发。本书中的部分案例也会借鉴、复用、改进CodeLabs相关的源码进行讲解。

2.4.2 应用产品设计

一个典型的鸿蒙应用的产品设计,必然要包含鸿蒙应用的特色。 下面的几点是笔者认为必须要包含在里面的,作为大家设计鸿蒙应用时的一些参考。

·多设备支持,即手机、平板电脑、手表甚至是智慧屏都可以支持。

·分布式数据或文件能力,不同设备中的同一款应用数据应该是实时同步的,且不完全需要后台服务即可实现。

·支持卡片功能。

·支持应用流转。

·支持原子化服务。

·产品设计阶段,应该给开发者提供产品文档和原型图,方便开发者在开发阶段清楚App的特点。

2.4.3 搭建开发环境

华为给鸿蒙开发者提供了完整的开发环境支持,包括代码编写、版本管理、编译调试、设备真机/模拟器预览等环节,可谓全流程打通,甚至不需要一款真实的鸿蒙手机,也一样可以开发鸿蒙应用。

2.4.4 多端App页面制作

一款App最直观的地方莫过于其用户界面设计(即UI)了。作为开发者,应该首先开发UI界面,而不用先去考虑其他数据相关的功能,先把UI界面开发完成,会极大地给开发者增加信心。

由于鸿蒙支持多种开发方式,开发者可以根据自己的技术选型选择合适的方式开发App的UI界面。本书实战项目主要使用Ark UI中的JS UI来实现,最后的多个项目案例中也会带着读者尝试TS UI的界面开发。

2.4.5 设备能力开发

UI界面开发完成之后,可以适当地增加一些设备能力的开发了。鸿蒙文档中提供了完整的设备API,比如振动、陀螺仪、蓝牙、相机等,用户可以根据自己的需求,通过一些简单的代码完成调用。很重要的一点是,这些设备API大部分都支持调用Java、JavaScript代码。

2.4.6 分布式本地数据开发

大多数的App都需要进行本地数据存储,鸿蒙支持非常多的数据存储方式。既有传统的本地数据存储接口,也有分布式的本地数据存储,数据类型不仅仅支持key-value,还支持本地关系型数据库。

更重要的是,以上各种方式的数据存储都支持分布式数据管理,这也是笔者非常推荐的方式,大家应该尽可能地使用分布式数据管理本地数据。

2.4.7 引入服务端接口数据

尽管鸿蒙分布式数据管理支持跨设备同步更新的特点,但是用户的数据仍需要尽可能地保存到服务端。鸿蒙支持HTTP/HTTPS、WebSocket甚至是自建协议,后面的项目中也会带着读者体验服务端接口数据的开发。

2.4.8 功能完整性测试

以上内容全部开发完成后,可以引入鸿蒙相关的测试框架进行测试。鸿蒙支持单元测试、UI自动化测试等,甚至还支持云端测试。

2.4.9 上架应用商店

当我们开发的应用已经完全没问题了,就可以申请应用发布上架了。鸿蒙开发者可以在开发者中心查看自己的应用发布流程及数据。

应用上架前,一定要在编辑器中申请应用签名,这一步也是非常简单的,开发者可以一键生成签名,签名后的应用经过编译就可以生成应用安装包。

将HarmonyOS应用打包成App后,通过AppGallery Connect将HarmonyOS应用分发到不同的设备上。可以根据发布HarmonyOS应用指导将App上架到华为应用市场。 e9qeKhnffRLd6QW6iowVzqTbftfZSUbJX9LfhUKS/MpaOOwxHC5UW1mDZ9D8oYtO

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