目标
掌握HarmonyOS应用开发编程语言,了解HarmonyOS系统概述并搭建HUAWEI DevEco Studio集成开发环境 。在学习HarmonyOS之前,大家需要熟练使用编程语言。HarmonyOS使用了Java UI和JS UI两种UI框架,开发者可自主选择Java或JS进行HarmonyOS应用开发。− 基本数据类型、变量和常量、运算符、表达式、条件分支结构、循环结构
− 异常体系结构(异常顶层继承结构;try/catch/finally;try with resources;
throw/throws;线程/线程池的异常默认处理器)− 集合框架(集合接口级继承结构;基于Tree/Linked/Hash的集合;WeakReference集合、集合大小初始化;Collection;Arrays)− 输入输出流(常用InputStream/OutputStream;常用Reader/Writer、NIO)− 多线程(Runnable;Callable;synchronized;notify/notifyAll/wait;sleep;线程的状态转换;volatile;线程池)
− 其他高级语言特性(网络编程、泛型、注解、序列化、反射机制、Java虚拟机、Java 8、JSON解析等)
− HML(HarmonyOS Markup Language,基本标签、表格标签、div标签等)− CSS(CSS3基本语法、标签选择器、Id选择器、Class选择器、浮动、定位属性、盒子模型等)− JavaScript(JS基础语法、系统函数、自定义函数、匿名函数、常见事件、数组、字符串、日期对象等)− HarmonyOS的系统定义、技术特性、系统安全等基本知识· HUAWEI DevEco Studio集成开发环境− 下载并安装HUAWEI DevEco Studiohttps://developer.harmonyos.com/cn/develop/deveco-studio#download
− 注册华为开发者账号,真机运行应用还需申请调试证书
− 了解应用开发、编译构建、应用运行、应用调试、应用测试、应用发布等基本流程了解应用开发、编译构建、应用运行、应用调试、应用测试、应用发布等基本流程之后,大家就可以正式开始HarmonyOS应用开发之旅了。
大家可以参考下面的资料,快速完成编程语言的学习:
− Java学习资料:《Java编程思想》、《Java核心技术》、《Java经典实例》等书籍
− JS学习资料:《JavaScript权威指南》、《JavaScript高级程序设计》等书籍
如果你已经具备Java或JS相关的语言基础可以跳过本章节的学习;如果你是刚刚入门,建议先学习编程语言,夯实代码基础。
学习过程中遇到任何困难,也可前往HarmonyOS官方论坛发帖求助https://developer.huawei.com/consumer/cn/forum/block/harmonyosAbility及其生命周期、公共事件与通知、HarmonyOS Java UI组件应用、HarmonyOS JS UI组件应用、HarmonyOS多模输入,以及服务卡片的开发。恭喜大家已经渐入佳境,朝技术大牛勇敢地迈出了第一步。在这个阶段,我们将主要学习HarmonyOS的界面开发的系列知识:− Page Ability,用于提供与用户交互的能力
− Service Ability,用于提供后台运行任务的能力
− Data Ability,用于对外部提供统一的数据访问抽象
− 系统公共事件
− 自定义公共事件
· HarmonyOS Java UI组件应用
− 常用组件的使用,包括Button、Text、Image、ToastDialog、WebView等
− 常用布局,包括DirectionalLayout、DependentLayout、PositionLayout等
− 自定义组件和自定义布局
− 基本的动画开发指导,如帧动画、数值动画、属性动画− HML(HarmonyOS Markup Language)、CSS、JavaScript
− JS的基本组件,包括基础组件、容器组件、媒体组件、画布组件等
− JS的基本布局,学会如何添加容器
− 如何添加交互、动画、事件、页面路由焦点逻辑等
− JS FA(Feature Ability)调用Java PA(Particle Ability)的机制− HarmonyOS多模输入融合框架(传统按键、触屏等输入方式,新型语音等输入方式)请大家多思考HarmonyOS背后的运行逻辑,如果还有一些疑惑,可前往HarmonyOS官方论坛发帖求助。推荐参考下面的资料,可帮助你快速完成本阶段的学习:− Java UI框架常用组件和布局开发体验:帮助开发者了解HarmonyOS Java UI框架常见的组件和布局− 基于JS通用组件的购物应用:使用JS开发一款简单的HarmonyOS购物应用− 如何实现自定义组件:通过一个圆形抽奖转盘讲解如何实现HarmonyOS自定义组件− IDE模板:IDE中已经集成了丰富的模板,均已标出使用何种语言进行编码,是你学习的宝库Step3 游刃有余(6-8周,每周8-10小时)
目标
在这个阶段,大家需要掌握HarmonyOS的新能力、新特性,包括分布式、AI、数据管理、设备管理等知识。
恭喜大家,距离HarmonyOS技术大牛又近了一步!
通过前面两个阶段的学习,你们已经具备了基础的HarmonyOS应用开发的能力,可轻松实现一些简单应用、实用卡片的开发。
在本阶段,我们将开启新的学习篇章,进一步提升大家的HarmonyOS应用开发能力,开发更加酷炫,功能更加强大的应用。大家需要学习:
· 分布式技术
− 分布式软总线:是分布式设备的通信基座,为设备提供了统一的分布式通信能力
− 分布式设备虚拟化:可以让多种设备共同形成一个超级虚拟终端
− 分布式任务调度:通过调用指定能力的分布式接口,实现跨设备能力调度
− 分布式数据服务:为应用程序提供不同设备间数据库数据分布式的能力
− 分布式文件服务:提供多设备之间的文件共享能力,能够在多个设备之间无缝获取文件
· 数据管理
− 关系型数据库:提供给用户无需编写原生SQL语句就能进行数据增删改查的方法
− 对象关系映射数据库:通过将实例对象映射到关系上,实现使用操作实例对象的语法,来操作关系型数据库
− 轻量级偏好数据库:主要用于保存应用的一些常用配置,并不适合存储大量数据和频繁改变数据的场景
− 融合搜索:提供搜索引擎级的全文搜索能力,可支持应用内搜索和系统全局搜索
− 数据存储管理:提供存储设备(包含本地存储、SD卡、U盘等)的数据存储管理能力的开发
− 二维码生成:调用方可以通过二维码字节流生成二维码图片
− 通用文字识别:利用文字识别技术将图像信息转化为计算机等设备可以使用的字符信息的技术
− 图像超分辨率:提供适用于移动终端的1x和3x超分能力
− 文档检测校正:提供了文档翻拍过程的辅助增强功能,包含两个子功能:文档检测和文档校正
− 文字图像超分:文字图像超分辨率可以对包含文字内容的图像进行9倍放大(高宽各放大3倍)
− 分词:对于一段输入文本,可以自动进行分词,同时提供不同的分词粒度
− 词性标注:对于输入的一段文本,自动通过词性标注接口对其进行分词,并为分词结果中的每个单词标注一个正确的词性
− 助手类意图识别:对用户发送给设备的文本消息进行语义分析和意图识别− IM类意图识别:利用机器学习技术,针对用户短信或聊天类APP等IM应用的文本消息进行内容分析,并识别出消息内容代表的用户意图− 关键字提取:可以在大量信息中提取出文本想要表达的核心内容− 实体识别:从自然语言中提取出具有特定意义的实体,并在此基础上完成搜索等一系列相关操作及功能− 语音识别:将语音文件、实时语音数据流转换为汉字序列,准确率达到90%以上(本地识别95%)
· 媒体
− 视频:视频编解码开发、视频播放、录制、提取等
− 图像:图像的编解码开发、位图操作等
− 相机:相机模块的开发和相关API的调用等
− 音频:音频的播放、采集、音量管理等
− 媒体会话管理:对媒体服务和界面进行解耦,使应用可以自由、高效地在不同的媒体之间完成切换
− 媒体数据管理:支持多媒体数据管理相关的功能开发,如:获取媒体元数据、截取帧数据等
· 安全
− 权限:定义了不同开放范围与授权方式的权限来保护数据− 生物特征识别:当前生物特征识别支持2D人脸识别、3D人脸识别,可应用于设备解锁、应用登录、支付等身份认证场景− NFC:NFC消息通知是HarmonyOS内部或者与应用之间跨进程通讯的机制− 蓝牙:蓝牙是短距离无线通信的一种方式,HarmonyOS蓝牙主要分为传统蓝牙和低功耗蓝牙− WLAN:为用户提供WLAN基础功能、P2P(peer-to-peer)功能和WLAN消息通知的相应服务− 网络管理:应用可以调用API接口来使用指定网络进行数据传输− 电话服务:电话服务系统提供了一系列的API用于获取无线蜂窝网络和SIM卡相关的一些信息− 传感器:开发者根据传感器提供的Sensor API,可以查询设备上的传感器,订阅传感器的数据− 控制类小器件:控制类小器件指的是设备上的LED灯和振动器− 位置:位置能力用于确定用户设备在哪里,系统使用位置坐标标示设备的位置− 设置:应用程序可以根据自身拥有的权限对其进行操作− 设备标识符:包括NetworkID、DVID、UUID
这个阶段难度指数升高,请合理调整你的心境。“修炼”成功后,你对HarmonyOS 的掌握将会上升到一个新的台阶。
· Sample案例库:针对HarmonyOS的新能力、新特性,我们为你准备了丰富的Sample案例库,案例包含分布式、多线程、常用组件、相机等特性,第一期共47个案例,即将全部开源(收藏本文,代码链接随后更新)
· Codelabs开发者教程:结合智慧生活的七大典型场景,我们为你准备好了大量的进阶学习资料,目前已经上线了20+个教程案例,你可以参考如下文档进行学习。
- 分布式技术是你需要重点学习的核心知识点,包括分布式任务调度(基于分布式的亲子早教系统)、分布式数据服务(如何使用分布式数据库)、分布式文件服务(HarmonyOS分布式语音照相机);
- 数据管理部分,可以参考如何使用轻量级偏好数据库、基于Data Ability的关系型数据库操作方法进行学习;
- HarmonyOS为你提供了开箱即用的AI能力,可以参考基于AI能力的通用文字识别、基于AI能力的语音播报系统进行学习;
- 媒体部分可以参考基于图像模块实现图库图片的四种常见操作、实现一个简易播放器进行图像和视频播放器的学习;
- 安全可以参考如何使用HarmonyOS面部识别能力进行学习;- 设备管理可以参考如何使用BLE实现设备间通信进行学习;
学完本阶段后,大家能开发出以下的案例效果:
▲智慧出行:导航信息在手机、手表、车机之间来回流转
▲智能家居:手机可以控制台灯亮度
▲手机手表背单词:手表显示单词列表,手机显示单词详情
▲分布式照相机:右侧手机拍摄的照片可以立马流转到左侧手机上
Step4 独孤求败(8-10周,每周10-12小时)
本阶段学习是迈向“大神”的进阶之路,需要着重学习HarmonyOS的底层原理,包括大量驱动和框架代码。成为技术大牛已近在咫尺了!完成本阶段的学习,你的HarmonyOS应用开发能力将超越95%以上的开发者。HarmonyOS整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。
在本阶段,你需要阅读OpenHarmony开源项目的相关代码,还需要有C/C++的相关背景知识,请重点掌握以下内容:
· C/C++编程语言
− 基本语法,包括数据类型、变量、指针、字符串、数组、结构体、动态库等
− 面向对象的编程思想,包括类和对象,类的继承和派生、多态等
− 其他语言特性,包括函数模板、类模板,异常、I/O流、STL等− 内核子系统:HarmonyOS采用多内核设计,支持针对不同资源受限设备选用适合的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等
− 驱动子系统:硬件驱动框架(HDF)是HarmonyOS硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架
系统服务层是HarmonyOS的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:
− 系统基本能力子系统集:为分布式应用在HarmonyOS多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时、公共基础库、多模输入、图形、安全、AI等子系统组成
− 基础软件服务子系统集:为HarmonyOS提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X) 、MSDP&DV等子系统组成− 增强软件服务子系统集:为HarmonyOS提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成− 硬件服务子系统集:为HarmonyOS提供硬件服务,由位置服务、生物特征识别、穿戴专有硬件服务、IoT专有硬件服务等子系统组成根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。−HarmonyOS应用开发提供了Java/C/C++/JS等多语言的用户程序框架和Ability框架−两种UI框架(包括适用于Java语言的Java UI框架、适用于JS语言的JS UI框架)− 根据系统的组件化裁剪程度,HarmonyOS设备支持的API也会有所不同
· 应用层
−应用层包括系统应用和第三方非系统应用
−HarmonyOS的应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成
此阶段适合有丰富应用开发经验的开发者进行学习,你可以接触到大量的系统底层源码,这些代码都将陆续开源,请持续关注。学完之后,大家就可以试着做一些子系统的开发了。
· 学习举例:分布式软总线子系统
− 能力了解:阅读分布式软总线子系统.md,了解该子系统的关键能力
− 阅读代码:分布式软总线子系统的相关代码都将开源到“/foundation/communication”目录下,你可以下载相关代码进行阅读− 提交代码:如果你在代码阅读过程中有一些自己的优化改进,可以参与贡献,具体可以了解如何贡献链接
− 参与社区:大神还可以参与OpenHarmony社区治理、开发者贡献指南、开发者贡献协议、社区交流等内容,具体可以了解社区介绍链接