学习目标
了解鸿蒙,能够说出鸿蒙的发展历程
熟悉鸿蒙的特点,能够总结鸿蒙的6个特点
了解鸿蒙的开发技术,能够说出鸿蒙的6个开发技术
了解鸿蒙开发的适用人群,能够说出常见的鸿蒙开发适用人群
掌握DevEco Studio的下载和安装,能够独立完成DevEco Studio的下载和安装
掌握使用DevEco Studio创建项目的方法,能够独立完成项目的创建
掌握将DevEco Studio界面设置为中文的方法,能够独立完成设置
掌握模拟器的安装方法,能够独立安装模拟器
了解鸿蒙项目的目录结构,能够说出其常用目录和文件的作用
章节概述
在全球科技竞争加剧的背景下,掌握自主可控的核心技术显得尤为重要。鸿蒙作为中国自主研发的操作系统,承载着国家信息安全与科技进步的重要使命。学习鸿蒙应用开发,不仅能够参与到这一历史性的科技创新实践中,还能为国家的科技自立自强贡献一份力量。本章将对鸿蒙的概述、开发环境的搭建和项目的目录结构进行讲解。
1.1 鸿蒙概述
1.1.1 鸿蒙的发展历程
自2012年起,华为开始规划自主研发操作系统。
2019年5月,谷歌(Google)公司禁止华为使用谷歌移动服务(GMS),该服务主要包括谷歌开发的应用,例如谷歌搜索、Gmail、Google Maps等,这导致华为手机无法预装谷歌的应用,对华为手机在海外市场的销售和用户的体验造成了一定的影响。
为了减少对谷歌移动服务的依赖,华为推出了华为应用市场和华为移动服务,并积极鼓励开发者加入其生态圈,提升自身的软件生态系统。
2019年8月9日,华为正式发布了鸿蒙。
鸿蒙这个词来源于中国古代神话,盘古开天辟地之前的混沌状态被称为鸿蒙,华为使用鸿蒙作为系统名称,体现了系统从无到有的过程,同时也体现出华为在科技领域的创新和探索精神。
在随后的几年,鸿蒙陆续更新2.0版本、3.0版本、4.0版本,这些版本都采用Android开放源代码项目(Android Open Source Project,AOSP)确保系统能够运行Android应用。如果Android开放源代码项目无法使用,华为手机也将无法正常使用。
为了解决这个问题,2023年8月4日,华为推出了HarmonyOS NEXT(又称为鸿蒙星河版)开发者预览版,它抛弃了Android开放源代码项目以及传统Linux内核,采用了更高效的微内核架构并仅支持运行鸿蒙应用,不再兼容Android应用,因此HarmonyOS NEXT也被称为"纯血鸿蒙",它的出现正式开启了"鸿蒙原生应用"时代。
2024年1月18日,HarmonyOS NEXT正式面向开发者开放申请。
2024年10月8日,HarmonyOS NEXT开启公测。
2024年10月22日,鸿蒙5.0发布,它隶属于HarmonyOS NEXT,标志着HarmonyOS NEXT经过概念阶段、开发者体验阶段、消费者体验阶段的打磨后,正式面向消费者发布。
1.1.2 鸿蒙的特点
鸿蒙是一款面向万物互联的全新操作系统,其特点如下。
-
分布式架构 鸿蒙采用分布式架构设计,可以在各种设备之间实现高效的连接和通信,如智能手机、平板电脑、智能穿戴设备、智能家居等各种物联网设备。
-
多终端适配 鸿蒙支持多种终端,能够在不同类型的终端上运行,为开发者提供了更加灵活的选择。
-
统一开发平台 鸿蒙提供了统一的开发平台,开发者可以通过一套代码实现多个平台的应用开发,减少了开发成本和工作量。
-
流畅的用户体验 鸿蒙提供了流畅的用户体验,包括快速响应、高效运行、稳定可靠等用户体验。
-
安全和隐私保护 鸿蒙注重安全和隐私保护,采用了多种安全机制来保护用户数据和隐私,确保用户信息不被泄露或滥用。
-
开放生态 鸿蒙秉持开放生态的理念,为开发者提供丰富的开发工具和资源,支持多种开发语言和框架,鼓励开发者共同参与其生态建设。
1.1.3 鸿蒙的开发技术
要想开发鸿蒙应用,需要先了解鸿蒙的开发技术,具体如下图所示。

① AppGallery Connect(简称AGC)是华为应用市场推出的应用一站式服务平台,致力于为开发者提供应用创意、开发、分发、运营、分析等的全生命周期服务,构建全场景智慧化的应用生态。
② DevEco Studio是专为鸿蒙生态而设计的集成开发环境,它为开发者提供了丰富的工具和功能,使开发者能够轻松地开发、调试和发布应用程序。
③ DevEco Testing是一站式的应用测试服务平台。它为开发者提供自动化测试框架,及稳定性、性能等专项测试服务,覆盖应用测试全周期,助力打造高品质应用。
④ ArkTS(又称为方舟编程语言)是鸿蒙生态的应用开发语言。它在保持TypeScript基本语法风格的基础上,通过规范强化静态检查和分析,提升代码健壮性。
⑤ ArkUI(又称为方舟UI框架)是一套构建分布式应用界面的声明式UI(User Interface,用户界面)开发框架。它使用简洁的UI信息语法、丰富的UI组件、实时界面预览工具,提升应用界面开发效率。
⑥ ArkCompiler是华为自研的统一编程平台,包含编译器、工具链、运行时等关键部件,支持高级语言在多种芯片平台的编译与运行。
除了以上开发技术外,鸿蒙还提供了设计指南和设计资源,以帮助UI设计人员更好地理解和应用鸿蒙的设计理念,从而高效、规范地设计出优秀的作品。
1.1.4 鸿蒙开发的适用人群
鸿蒙提供了丰富的开发文档、示例代码和开发工具,这些资源可以帮助开发者快速上手和解决开发中的问题。
对于有编程经验的开发者,特别是已经熟悉了其他智能手机操作系统(如Android、iOS等)的开发者来说,学习鸿蒙的开发更容易。
常见的鸿蒙开发适用人群如下。
(1) 软件开发者 对于具有一定编程基础的软件开发者来说,学习和使用鸿蒙能够拓展其技能。
(2) 物联网开发者 鸿蒙作为一款面向物联网的操作系统,对于专注于物联网开发的开发者来说,掌握鸿蒙开发技能可以更好地应对物联网应用的需求。
(3) 跨平台应用开发者 对于需要开发跨平台应用的开发者来说,鸿蒙的统一开发平台和多终端适配能力能够帮助开发者更轻松地编写跨平台的应用程序。
鸿蒙开发的学习门槛相对较低,适用于有一定编程基础的软件开发者、物联网开发者以及跨平台应用开发者。
通过学习和使用鸿蒙,开发者可以拓展自己的技能和涉猎范围,以更好地适应未来智能设备和物联网应用的发展趋势。
1.2 搭建鸿蒙开发环境
1.2.1 下载和安装DevEco Studio
鸿蒙为开发者提供了DevEco Studio,使用它可以开发鸿蒙应用。DevEco Studio支持运行在Windows和macOS中,本书主要基于Windows操作系统进行讲解。
在使用Windows操作系统时,DevEco Studio的基本配置要求如下。 操作系统:Windows 10 64位及以上版本。 内存:至少8G内存,推荐16GB及以上。 网络:能够访问互联网。
通过华为开发者联盟可以下载DevEco Studio。从华为开发者联盟进入DevEco Studio的下载页面,如下图所示。

① 双击DevEco Studio安装包启动安装程序,进入"欢迎使用DevEco Studio安装程序"界面。 ② 单击"下一步"按钮,会跳转到"选择安装位置"界面。


③ 单击"浏览"按钮可以重新设置安装位置,单击"下一步"按钮进入"安装选项"界面。 ④ 单击"下一步"按钮进入"选择开始菜单目录"界面。


⑤ 单击"安装"按钮进入"安装中"界面。 安装成功后,进入"DevEco Studio安装程序结束"界面。


⑥ 选中"运行 DevEco Studio"复选框,单击"完成"按钮,会弹出"Import DevEco Studio Settings"对话框。 ⑦ 单击"OK"按钮,会弹出"Welcome to HUAWEI DevEco Studio"对话框。


⑧ 单击"Agree"按钮,会弹出"Welcome to DevEco Studio"窗口。

⑨ 单击"Create Project"按钮可以创建一个项目,单击"Open..."按钮可以打开文件夹,单击"Get from VCS"按钮可以通过版本控制工具获取远程项目。
1.2.2 使用DevEco Studio创建项目
安装了DevEco Studio后,若要开发鸿蒙应用,需要在DevEco Studio中创建一个项目。 在DevEco Studio的欢迎界面单击"Create Project"按钮,进入选择项目模板界面。

下面对一些常见的项目模板进行介绍。
| 模板名 | 说明 |
|---|---|
| Empty Ability | 用于Phone、Tablet、2in1、Car设备的模板,展示基础的"Hello World"功能 |
| Native C++ | 用于Phone、Tablet、2in1、Car设备的模板,作为应用调用C++代码的示例工程,应用界面显示"Hello World" |
| CloudDevEmpty Ability | "端云一体化"开发通用模板 |
| LiteEmpty Ability | 用于Lite Wearable设备的模板,展示基础的"Hello World"功能。可基于此模板,修改设备类型及RuntimeOS,进行小型嵌入式设备开发 |
| Flexible Layout Ability | 用于创建跨设备应用开发的三层工程结构模板。三层工程结构包含common(公共能力层)、features(基础特性层)、products(产品定制层) |
| Embeddable Ability | 用于开发支持被其他应用嵌入式运行的元服务的工程模板 |
Phone、Tablet、2in1、Car、Lite Wearable是鸿蒙对各种设备的代称,它们分别表示智能手机、平板电脑、二合一(融合了平板电脑和笔记本电脑功能的设备)、车载设备、可穿戴设备(如智能手表等)。
对于初学者来说,建议选择"Empty Ability"模板,然后单击"Next"按钮进入填写信息界面。

下面对填写信息界面的各项进行介绍。
Project name:用于填写项目名称,由大小写字母、数字和下划线组成。 Bundle name:用于设置包名,包名通常使用反写域名的形式。 Save location:用于设置项目的保存路径,由大小写字母、数字和下划线组成,不能包含中文字符。 Compatible SDK:用于设置最低兼容的API 版本。 Module name:用于设置默认模块的名称,默认是entry。 Device type:用于设置支持的设备类型。
单击"Finish"按钮即可完成项目的创建,如下图所示。

最右侧的一栏中的"Previewer"表示预览器,打开它可以预览当前打开的页面(即Indexs.ets文件)。单击"Previewer"打开预览器,效果如下图所示。

1.2.3 将DevEco Studio界面设置为中文
项目创建完成后,DevEco Studio的默认语言是英文,如果想要切换为中文,单击菜单栏中的"File"菜单项,然后单击"Settings..."命令,打开"Settings"对话框。在该对话框中,按照下图标注的顺序进行操作。

单击"OK"按钮后会弹出一个对话框,询问用户是否重启DevEco Studio,如下图所示。

单击"Restart"按钮即可重启DevEco Studio,重启后,DevEco Studio会切换成中文。
DevEco Studio的中文界面如下图所示。

1.2.4 安装和使用模拟器
模拟器是一个用于开发和测试鸿蒙应用的工具,它可以模拟不同型号和规格的设备,以及模拟不同网络条件和系统状态,以帮助开发者更好地优化应用程序,确保应用程序在不同设备上的兼容性和稳定性。
通过在模拟器中运行应用程序,开发者可在发布应用之前对应用程序进行调试和验证。
模拟器对计算机有一定的配置要求。以Windows操作系统环境为例,具体如下。
① Windows 10 企业版、专业版或教育版(或Windows 11),且操作系统版本不低于10.0.18363。 ② CPU为64位,且具有二级地址转换(SLAT)功能。 ③ CPU支持AES指令集。 ④ CPU支持VM监视器模式扩展(如支持英特尔CPU的VT-c技术)。 ⑤ 内存为16GB及以上。 ⑥ OpenGL版本为4.1及以上。 ⑦ 屏幕分辨率为1280×800像素及以上。
另外,模拟器不支持在虚拟机系统中运行。
- 安装模拟器 ① 在Windows操作系统中开启虚拟化支持。以Windows 10系统为例,打开"控制面板"→"程序"→"程序和功能"→"启用或关闭Windows功能",在弹出的"Windows功能"窗口中选中"Hyper-V""Windows虚拟机监控程序平台""虚拟机平台"复选框。


② 单击DevEco Studio菜单栏中的"工具"→"设备管理器",会弹出"设备管理器"窗口。

③ 单击右下角的"新建模拟器"按钮,会弹出"DevEco虚拟设备配置"对话框。

其中"Huawei_Phone"表示智能手机(简称手机),"Huawei_Foldable"表示折叠屏智能手机(简称折叠屏),"Huawei_Table"表示平板电脑(简称平板)。
④ 单击"Huawei_Phone"右侧的"下载"按钮 会弹出"SDK安装"对话框,此时正在下载模拟器。

⑤ 等待模拟器下载完成后,单击"完成"按钮,回到"DevEco虚拟设备配置"对话框。单击"下一个"按钮,进入"虚拟设备配置"界面。

⑥ 单击"完成"按钮,回到"设备管理器"窗口,可以看到模拟器已经创建完成。

- 使用模拟器 单击 按钮可以启动模拟器。模拟器启动后,会显示开机画面。开机完成后,会显示锁屏界面。使用鼠标指针上滑锁屏界面进行解锁,解锁后会进入桌面。

通过控制栏可以对模拟器进行操作。将当前项目运行到模拟器,即可在模拟器中看到当前项目的运行效果。

在实际开发中,对于简单的界面设计,使用预览器可以快速地查看页面效果,但预览器的功能有限,当预览器不支持预览时则需要在模拟器中查看效果。
另外,由于模拟器的功能限制,有些功能无法在模拟器中实现,需要在真机上运行。读者可以将搭载鸿蒙的手机通过USB连接到计算机,在手机中开启"开发人员选项"中的"USB调试"功能,即可在真机上运行。
1.3 鸿蒙的目录结构
在创建鸿蒙项目时,会自动生成一些文件和目录,鸿蒙项目的一级目录如下所示。
| 目录 | 作用 |
|---|---|
| .hvigor | 用于存放构建配置文件 |
| .idea | 用于存放开发工具配置文件 |
| AppScope | 用于存放应用全局需要的资源文件 |
| entry | 用于存放应用模块文件,包括入口文件、代码和资源等 |
| hvigor | 用于存放自动化构建工具,包括任务注册编排、工程模型管理等 |
| oh_modules | 用于存放项目所依赖的第三方库文件 |
在一级目录下有一些文件和目录会被经常使用,具体如下表所示。
| 类型 | 路径 | 作用 |
|---|---|---|
| 文件 | AppScope/app.json5 | 应用的全局配置文件 |
| 目录 | entry/src/main/ets | 用于存放ArkTS源码文件 |
| 目录 | entry/src/main/ets/entryability | 用于存放应用的入口 |
| 目录 | entry/src/main/ets/entrybackupability | 用于存放应用备份恢复的入口 |
| 目录 | entry/src/main/ets/pages | 用于存放应用的页面 |
| 目录 | entry/src/main/resources | 用于存放应用所用到的资源文件,如图形文件、多媒体文件、字符串文件、布局文件等 |
| 目录 | entry/src/main/resources/base/element | 用于存放字符串、整数、颜色、样式等资源的JSON文件 |
| 目录 | entry/src/main/resources/base/media | 用于存放图形文件、多媒体文件,如视频、音频等文件,支持的文件格式包括.png、.gif、.mp3、.mp4等 |
| 类型 | 路径 | 作用 |
|---|---|---|
| 目录 | entry/src/main/resources/rawfile | 用于存放任意格式的原始资源文件 |
| 文件 | entry/src/main/module.json5 | 模块配置文件,主要包含HAP的配置信息、应用在具体设备上的配置信息以及应用的全局配置信息 |
| 文件 | entry/build-profile.json5 | 模块信息、编译信息配置文件 |
| 文件 | entry/hvigorfile.ts | 模块级编译构建任务脚本文件 |
| 文件 | entry/oh-package.json5 | 模块级依赖配置文件,描述第三方包的包名、版本、入口文件(类型声明文件)和依赖项等信息 |
| 文件 | build-profile.json5 | 应用级配置文件,包括签名、产品配置等 |
| 文件 | hvigorfile.ts | 应用级编译构建任务脚本文件 |
| 文件 | oh-package.json5 | 全局依赖配置文件 |
以上目录结构基于Stage模型,它是鸿蒙早期版本的FA(Feature Ability)模型的改进版。
Stage模型将一个基础的鸿蒙项目划分为多个模块,默认提供entry模块,它是应用的主模块,或称为入口模块,该模块的文件保存在entry目录中。
Stage模型的模块按照使用场景可以分为: Ability类型的模块 Library类型的模块
1.Ability类型的模块
一个Ability类型的模块可以包含多个Ability(能力),Ability代表应用所具备的能力,即一个应用可以具备多种能力。
Ability模块最终会被编译成HAP(Harmony Ability Package,鸿蒙能力包),HAP可以独立安装和运行,它是应用安装的基本单位。
HAP分为如下两种类型。
entry类型的HAP:保存应用的主模块,包含应用的入口界面、入口图标和主功能特性。 feature类型的HAP:保存应用的动态特性模块。它通常用于针对不同类型的设备提供不同特性的场景,达成"一次开发,多端部署"的目的。
在将每个应用分发到同一类型的设备上时,每个应用只能包含唯一一个entry类型的HAP,以及零个或多个feature类型的HAP。
entry模块默认提供了EntryAbility和EntryBackupAbility,具体解释如下。
① EntryAbility是一个UIAbility类型的Ability,用于存放应用的入口。UIAbility是一种包含UI的应用组件,主要用于和用户交互,它为鸿蒙应用提供绘制界面的窗口。EntryAbility是对UIAbility的实现,它的主要功能是加载应用启动后默认显示的页面。
② EntryBackupAbility是一个BackupExtensionAbility类型的Ability,用于存放应用备份恢复的入口。BackupExtensionAbility用于为应用提供扩展的备份恢复能力。
- Library类型的模块
Library类型的模块不能独立安装和运行,它是一种专门用于实现代码和资源共享的模块,只能被其他模块依赖使用。
Library类型的模块分为以下两种类型。
① Static Library:静态共享库类型。该类型的模块编译后会生成一个扩展名为.har的文件,称为HAR(Harmony Archive,静态共享包)。 ② Shared Library:动态共享库类型。该类型的模块编译后会生成一个扩展名为.hsp的文件,称为HSP(Harmony Shared Package,动态共享包)。
当HAR和HSP被其他模块引用时,HAR中的代码和资源会跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份副本;HSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。HAR和HSP的区别如下图所示。

在默认情况下,新创建的鸿蒙项目中不含Library类型的模块,如有需要,开发者可以通过"文件"→"新建"→"模块"的方式自行创建Library类型的模块。
本章小结
本章首先讲解了鸿蒙概述,然后讲解了鸿蒙开发环境的搭建,包括下载和安装DevEco Studio、使用DevEco Studio创建项目、将DevEco Studio界面设置为中文以及安装和使用模拟器,最后讲解了鸿蒙项目的目录结构。通过本章的学习,读者应该能够对鸿蒙有初步认识,掌握如何搭建鸿蒙开发环境。