【HarmonyOS 5】初学者如何高效的学习鸿蒙?

一、前言
在全球科技格局风云变幻的当下,谷歌安卓系统的管控逐步收紧,加之国际形势愈发复杂,打造中国人自主的操作系统,已成为时代发展的必然要求,这不仅是突破技术瓶颈的关键之举,更是构建国内自主生态闭环的核心所在。鸿蒙操作系统,正是顺应这一趋势的前沿探索,其研发代表了我国操作系统领域的重要方向。
2021 年 6 月 2 日,华为举办鸿蒙操作系统及华为全场景新品发布会,正式发布面向智能手机的鸿蒙操作系统 2.0 版本,并且支持 Java 语言进行开发。这使得开发者能够基于 Java 语言进行鸿蒙应用的开发,极大推动了鸿蒙生态应用的发展。
自 2021 年鸿蒙发布 Java 版本起,我便开始持续关注鸿蒙生态的发展动态。在深入了解的过程中,我对鸿蒙的兴趣愈发浓厚,并于 2023 年正式投身于开源鸿蒙的开发工作,学习ArkUI和ArkTS。如今,我进一步参与到 HarmonyOS 头部应用的鸿蒙化开发中。
在这几年的开发历程中,我积累了丰富的经验,也有了诸多深刻的感悟。我深知 "真理越辩越明",良好的学习总结与交流,不仅能促进知识框架的完善,也与代码开源的理念高度契合。
只有通过充分的交流学习与总结,才能在实践中检验真理,就如同费曼学习法所倡导的一样。因此,我希望将自己的所学、所感、所悟分享给同样在学习鸿蒙开发的同行,为大家提供有益的参考 。若是有调整的意见或者困惑的问题,欢迎与我沟通。
二、鸿蒙相关概念的扫盲
鸿蒙
特指HarmonyOS与OpenHarmony,前者是商业鸿蒙,是华为公司使用和维护的系统。后者是HW开源给开放原子基金协会的系统,任何人遵守开源协议,都可以使用和改造的系统。
HarmonyOS虽然基座是OpenHarmony,但是上层功能和使用差异也还是有的。两者虽然近似,但是并非一个东西。
两者区别详情参见:OpenHarmony和HarmonyOS区别与共性
鸿蒙相关公司
目前使用和维护开源鸿蒙OpenHarmony成长的公司有很多,例如深开鸿,润开鸿,鸿湖万联,开鸿智谷,九联开鸿等。开源鸿蒙的现在使用方向很多,例如电网,工业,物联,矿产等等。
商业鸿蒙,是华为公司自己进行迭代和维护与使用。
鸿蒙北向和南向
特指,北向应用开发,南向设备开发。设备开发多是基于开源鸿蒙。北向分OpenHarmony应用开发和HarmonyOS应用开发。
鸿蒙双框架和单框架
在 HarmonyOS NEXT 发布之前,华为手机运行的是 "双框架" 系统。其架构逻辑是鸿蒙和安卓框架共同存在,但底层基础服务仍以鸿蒙为核心,也被称为 "杂交系统"。单框架:以 HarmonyOS NEXT 为代表,是纯血鸿蒙系统,底座全线自研,去掉了传统的安卓开放源代码项目(AOSP)代码,只支持鸿蒙内核及鸿蒙系统的应用
鸿蒙HDE
华为开发者专家(HUAWEI DEVELOPER EXPERTS),经过华为官方认证。他们是华为开放能力的实践领袖,肩负着技术布道、知识赋能等责任,会在各大技术社区解答用户有关华为开发能力的相关问题,定期在社交媒体上进行线上分享,也常在线下以讲师身份分享关于华为最新技术趋势讲解。
鸿蒙HDD
UAWEI Developer Day华为开发者日,定期在国内多个城市举办开发者深度交流的活动。
仓颉
仓颉是华为鸿蒙系统中的编程语言,目前也可用于鸿蒙开发,还在起步中。
鸿蒙开发概念
主流使用ArkTS声明式开发语言,ArkUI响应式开发框架。
以下是鸿蒙应用开发的类的概念说明:
dart
import { promptAction } from '@kit.ArkUI' // 导入系统API
import { IconView } from './IconView' // 导入自定义组件
@Entry // 装饰器,代表入口和界面的意思。
@Component // 装饰器,代表组件
struct Index {
// 重写build接口进行界面或者组件布局的编写,与传统命令式编程不同,这里和Flutter类似,鱼鳞排版的布局搭建
build() {
// 堆叠容器控件
Stack({
alignContent: Alignment.BottomEnd // 小括号内为Stack的属性设置
}) { // 花括号内是包裹的子容器
Text("边距点击问题测试demo")
.fontSize(50)
.fontWeight(FontWeight.Bold)
IconView().zIndex(1)
Row() {
}
.height('100%')
.width('100%')
.backgroundColor(Color.Blue)
// 点击事件
.onClick(() => {
// 点击事件回调
// 气泡
promptAction.showToast({
message: "点击!"
})
})
}
// 控件的属性,多是通过点的形式进行设置
.height('100%')
.width('100%')
}
}
ArkUI-X
ArkUI - X 是华为推出的跨平台 UI 框架,旨在将 ArkUI 开发框架扩展到多个操作系统平台。目前还在起步中。
三、鸿蒙学习的步骤
不管是前端,移动端转鸿蒙。还是初学者学习鸿蒙。都可参考根据以下学习路线进行鸿蒙的学习。
首先需要确定你的开发方向,是OpenHarmoy or HarmonyOS。是应用开发,还是设备开发,亦或者是系统开发?
HarmonyOS
(1)知其然才能知其所以然,先进行鸿蒙整体概念的入门和学习
鸿蒙官方开发者学堂,针对鸿蒙相关知识点,进行视频类的讲解,对应还有习题与相关认证。
像鸿蒙初级和高级认证,应聘鸿蒙开发多会要求。
(2)通读鸿蒙学习文档
官方文档
有详细的功能调用接口说明:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/application-dev-guide
目前最新的API是15,指南是针对系统API进行举例说明参考demo的入口。API主要是系统API对应的详细接口和参数说明。最佳实践是官方针对热点问题,提供解决方案参考的示例和说明。
鸿蒙开发者官方论坛
https://developer.huawei.com/consumer/cn/forum/communityHome
问答入口,是发帖子需求技术问题讨论的渠道,目前回复还是很及时。
还有各大博客平台的鸿蒙社区,可根据自己使用习惯和鸿蒙的活跃度进行选择。
(3)工欲善其事必先利其器,进行开发环境和功能开发的学习
综上所述,开发者学堂、官方文档都有入门的知识点,可根据习惯进行学习。也可参考:【HarmonyOS】HarmonyOS开发环境安装和配置 https://editor.csdn.net/md/?articleId=142208211
OpenHarmony
https://gitee.com/openharmony/docs/blob/master/zh-cn/readme.md
开源鸿蒙文档,分为应用和设备。整个开源鸿蒙源码也在该项目中可看到。
四、根据自身定位进行定向学习
目前市面上鸿蒙开发者,多是从前端,移动端开发转向鸿蒙。也有初学者学习鸿蒙的同学。
(1)针对前端方向
首先鸿蒙的声明式开发与响应式布局,和前端Vue,React等开发语言和框架类似。所以开发思路上的门槛并不大,除了鸿蒙知识的学习,更需要补充移动端开发的思想。
这是前端开发者的弱势。因为目前市面上的鸿蒙开发工作,多是从既有的移动端进行鸿蒙化迁移,需要能看懂Android或者IOS端的代码。并且移动端开发比前端开发,对性能,内存使用,代码效率的要求可能会更高一些,这也需要一定的学习成本。
Android代码语法的学习可从Android官网或者菜鸟笔记,哔哩哔哩等网站上免费进行学习。
(2) 针对移动端开发方向
如果是Android Compose ,IOS swiftUI转到鸿蒙,都是声明式开发,学习鸿蒙的门槛会很小。只是对鸿蒙平台的系统API和思想进行学习。若不是这两种,还是传统命令式编程方向转过来,那需要先对声明式开发与响应式布局的概念进行学习。转变开发思路。
深入了解鸿蒙系统的独特架构与设计理念,对比与移动端系统的差异。这样才能如指臂使。熟悉 HarmonyOS 的开发语言如 Java、Kotlin 或 JavaScript 等,掌握 ArkUI 等开发框架的使用。参考官方丰富的文档、教程和示例代码,动手实践经典案例与小型项目。逐步积累鸿蒙开发经验,实现技术转型。
(3)针对初学者方向
初学者应先了解鸿蒙系统的架构与特性,学习相关编程语言,通过官方文档、教程及实践项目掌握 ArkUI 等开发框架,多参与社区交流以不断提升开发能力。
重点是编程语言语法的基础,开发概念的熟悉,多参与应用开发积累项目经验。
五、持续学习,敏捷迭代知识框架
因为鸿蒙在快速成长,API迭代速度很快。很多组件,路由管理,状态装饰器都在快速进化中。有的就被废弃了,需要快速学习新的方案。所以对持续学习的要求很高。
建议进行知识框架的搭建,例如通过思维导图,个人知识库,定期学习官方文档进行知识的迭代。例如可参考:
https://editor.csdn.net/md/?articleId=131387729 OpenHarmony知识图谱
在工作开发中,经常自我总结,归纳鸿蒙相关的技能和解决方案。