鸿蒙学习思维导图
应用程序包基础知识
- 应用程序包概述
 - 应用程序包结构
 -  应用程序包多HAP机制【上架是
.app,给.hap给测试者】- 多HAP机制设计目标
 - 多HAP构建视图
 - 多HAP的开发调试与发布部署流程
 -  多HAP使用规则
- App Pack包不能直接安装到设备上,只是上架应用市场的单元。
 -  App Pack包中所有HAP的配置文件中的
bundleName标签必须一致。 -  App Pack包中所有HAP的配置文件中的
versionCode标签必须一致。 - App Pack包中同一设备类型的所有HAP中必须有且只有===一个entry类型的HAP===,feature类型的HAP可以有一个或者多个,也可以没有。
 -  App Pack包中的每个HAP必须配置
moduleName标签,同一设备类型的所有HAP对应的moduleName标签必须唯一。 - 同一应用的所有HAP签名证书要保持一致。上架应用市场是以App Pack的形式上架,并对其进行了签名。应用市场分发时会将所有HAP从App Pack中拆分出来,同时对其中的所有HAP进行重签名,这样保证了所有HAP签名证书的一致性。在调试阶段,开发者通过命令行或IDE将HAP安装到设备上时要保证所有HAP签名证书一致,否则会出现安装失败的问题。
 
 - 多HAP运行机制及数据通信方式
 
 - 应用程序包安装和卸载流程
 - 应用程序包更新流程
 - 共享包
 
HarmonyOS基础技能
-  一切从Hello World开始
- 搭建开发环境
 - 创建项目并运行Hello World
 - 了解工程目录结构
 
 -  ArkTS语言  
- 基本UI描述
 - 页面级变量的状态管理
 - 应用级变量的状态管理
 - 动态构建UI元素
 - 渲染控制
 - 使用限制与扩展
 
 -  HarmonyOS-ArkUI声明式UI开发  
-  页面和自定义组件生命周期
-  组件生命周期(自定义组件也有):
aboutToAppear()、(build()在中间)、onDidBuild()、aboutToDisAppear() -  页面生命周期:
onPageShow()、onPageHide()、onBackPress() 
 -  组件生命周期(自定义组件也有):
 -  基础组件  
- Text
 -  Image
- objectFit–ImageFit
 
 - Button
 - Column(上下的线性)、Row(左右的线性)
 - Checkbox提供多选框组件,通常用于某选项的打开或关闭。
 - CheckboxGroup多选框群组,用于控制多选框全选或者不全选状态。
 -  List列表包含一系列相同宽度的列表项。适合连续、多行呈现同类数据,例如图片和文本。
- ListItem用来展示列表具体item,必须配合List来使用。
 - ListItemGroup该组件用来展示列表item分组,宽度默认充满List组件,必须配合List组件来使用。
 
 - Scroll
 - ScrollBar滚动条,配合可滚动组件使用,如List、Grid、Scroll。
 - Refresh下拉操作并显示刷新动效
 - ComposeListItem列表包含一系列相同宽度的列表项。内容包括适合连续、多行呈现同类数据的组合,例如图片和文本。
 - Span作为Text、ContainerSpan组件的子组件,用于显示行内文本的组件。
 - Flex弹性方式布局子组件的容器组件,提供更加有效的方式对容器内的子元素进行排列、对齐和分配剩余空间
 - Grid网格布局、GridItem网格容器中单项内容容器
 - Swiper轮播
 - PatternLock九宫格
 - Rating评分控件【可弄成星星样式】
 - Select下拉选择菜单
 - Slider滑动进度条
 - Toggle可做类似checkbox、switch、button的样式按钮
 -  Stepper多个步骤页面
- StepperItem用作Stepper组件的页面子组件
 
 -  Tabs多页签(要用TabController来控制切换)
- TabContent仅在Tabs中使用,对应一个切换页签的内容视图
 
 - CustomDialog自定义弹窗。通过CustomDialogController类显示自定义弹窗
 - CalendarPicker日历选择器
 - TextPicker滚动选择器、DatePicker日期选择器、TimePicker时间选择器
 - ImageSpan图文混排
 - WaterFlow瀑布流布局
 - SegmentButton分段按钮
 - Filter多条件筛选
 
 - 容器组件
 - 绘制组件
 - 画布组件
 -  动画
- 属性动画 (animation) 组件的某些通用属性变化时,可以通过属性动画实现渐变过渡效果,提升用户体验。支持的属性包括width、height、backgroundColor、opacity、scale、rotate、translate等。布局类改变宽高的动画,内容都是直接到终点状态,例如文字、Canvas的内容等,如果要内容跟随宽高变化,可以使用renderFit属性配置。
 - 显式动画 (animateTo)提供全局animateTo显式动画接口来指定由于闭包代码导致的状态变化插入过渡动效。同属性动画,布局类改变宽高的动画,内容都是直接到终点状态,例如文字、Canvas的内容等,如果要内容跟随宽高变化,可以使用renderFit属性配置。
 - 关键帧动画 (keyframeAnimateTo)在UIContext中提供keyframeAnimateTo接口来指定若干个关键帧状态,实现分段的动画。同属性动画,布局类改变宽高的动画,内容都是直接到终点状态,例如文字、Canvas的内容等,如果要内容跟随宽高变化,可以使用renderFit属性配置。
 - 页面间转场 (pageTransition)当路由进行切换时,可以通过在pageTransition函数中自定义页面入场和页面退场的转场动效。详细指导请参考页面转场动画。
 - 组件内转场 (transition)组件内转场主要通过transition属性配置转场参数,在组件插入和删除时显示过渡动效,主要用于容器组件中的子组件插入和删除时,提升用户体验。
 - 共享元素转场 (sharedTransition)可以通过设置组件的 sharedTransition 属性将该元素标记为共享元素并设置对应的共享元素转场动效。sharedTransition仅发生在页面路由(router)跳转时。
 - 组件内隐式共享元素转场 (geometryTransition)在视图切换过程中提供丝滑的上下文传承过渡。通用transition机制提供了opacity、scale等转场效果,geometryTransition通过安排绑定的in/out组件(in指新视图、out指旧视图)的frame、position使得原本独立的transition动画在空间位置上发生联系,将视觉焦点由旧视图位置引导到新视图位置。
 - 路径动画 (motionPath)设置组件进行位移动画时的运动路径。
 - 粒子动画 (Particle) 粒子动画是在一定范围内随机生成的大量粒子产生运动而组成的动画。动画元素是一个个粒子,这些粒子可以是圆点、图片。通过对粒子在颜色、透明度、大小、速度、加速度、自旋角度等维度变化做动画,来营造一种氛围感,比如下雪的动效,雪花飘舞就相当于一个个雪花粒子在做动画。粒子动画的效果通过Particle组件展现。
 - 显式动画立即下发 (animateToImmediately)animateToImmediately接口用来提供显式动画立即下发功能。同时加载多个属性动画的情况下,使用该接口可以立即执行闭包代码中状态变化导致的过渡动效。
 
 -  弹窗  
- 警告弹窗 (AlertDialog)显示警告弹窗组件,可设置文本内容与响应回调。
 - 列表选择弹窗 (ActionSheet)
 - 自定义弹窗 (CustomDialog)通过CustomDialogController类显示自定义弹窗。使用弹窗组件时,可优先考虑自定义弹窗,便于自定义弹窗的样式与内容。
 - 日历选择器弹窗 (CalendarPickerDialog)点击日期弹出日历选择器弹窗,可选择弹窗内任意日期。
 - 日期滑动选择器弹窗 (DatePickerDialog)根据指定的日期范围创建日期滑动选择器,展示在弹窗上。
 - 时间滑动选择器弹窗 (TimePickerDialog)以24小时的时间区间创建时间滑动选择器,展示在弹窗上。
 - 文本滑动选择器弹窗 (TextPickerDialog)根据指定的选择范围创建文本选择器,展示在弹窗上。
 - 弹出框 (Dialog)弹出框是一种模态窗口,通常用于在保持当前的上下文环境时,临时展示用户需关注的信息或待处理的操作,用户在模态弹出框内完成上述交互任务。模态弹出框需要用户进行交互才能够退出模态模式。
 
 -  手势处理
- 绑定手势方法为组件绑定不同类型的手势事件,并设置事件的响应方法。
 - TapGesture支持单击、双击和多次点击事件的识别。
 - LongPressGesture用于触发长按手势事件,触发长按手势的最少手指数为1,最短长按时间为500毫秒。
 - PanGesture滑动手势事件,当滑动的最小距离达到设定的最小值时触发滑动手势事件。
 - PinchGesture用于触发捏合手势,触发捏合手势的最少手指为2指,最大为5指,最小识别距离为5vp。
 - RotationGesture用于触发旋转手势事件,触发旋转手势的最少手指为2指,最大为5指,最小改变度数为1度。
 - SwipeGesture用于触发滑动事件,滑动速度大于100vp/s时可识别成功。
 - 组合手势手势识别组合,即多种手势组合为复合手势,支持连续识别、并行识别和互斥识别。
 - 自定义手势判定为组件提供自定义手势判定能力。开发者可根据需要,在手势识别期间,决定是否响应手势。
 - 设置组件绑定的手势用于设置组件绑定的手势。可以通过UIGestureEvent对象调用其接口添加或删除手势。
 - 手势拦截增强为组件提供手势拦截能力。开发者可根据需要,将系统内置手势和比其优先级高的手势做并行化处理,并可以动态控制手势事件的触发。
 
 
 -  页面和自定义组件生命周期
 
HarmonyOS就业必备技能
-  Stage模型入门
- Stage模型的概述
 - UIAbility组件
 - 信息传递的载体Want,是对象间信息传递的载体, 可以用于应用组件间的信息传递。
 
 -  网络管理
- HTTP数据请求
 - Web组件
 - 网络与连接
 
 -  数据管理
- 首选项
 - 关系型数据库
 - 数据共享
 - 文件管理
 
 -  电话服务
- 电话服务开发概述
 - 跳转拨号页面
 - 获取当前蜂窝网络信号信息
 
 -  一次开发,多端部署
- 自适应布局
 - 响应式布局
 - 典型布局场景
 
 -  分布式应用开发
-  应用组件跨设备交互(流转)
- 流转的概述
 - 跨端迁移
 - 多端协同
 
 -  分布式数据管理
- 分布式数据服务
 - 分布式数据对象
 
 
 -  应用组件跨设备交互(流转)
 -  通知与窗口管理
- 窗口开发概述
 - 管理应用窗口
 - 管理系统窗口
 - 通知
 
 
HarmonyOS多媒体技术
-  音频
- 音频开发概述
 - 音频播放
 - 音频录制
 - 音频渲染
 - 音频流管理
 - 音频采集
 - OpenSL ES播放
 - OpenSL ES录音
 - 音频焦点模式
 - 音量管理
 - 路由、设备管理
 
 -  视频
- 视频播放
 - 视频录制
 
 -  媒体会话
- AVSession开发概述
 - AVSession
 
 -  图片
- 图片
 
 -  相机
- 相机
 - 分布式相机
 
 
鸿蒙NaPi组件进阶
-  鸿蒙交叉编译
- gcc交叉编译指令参数详解
 - Makefile语法
 - GN和Cmake语法
 - 手动交叉编译鸿蒙So库
 
 -  编译过程与链接过程
- C语言从编译到执行流程
 - C语言编译过程与链接过程详解
 - 宏定义与文件头的应用
 - 动态链接与SO库的使用
 
 -  Napi编程
- Napi编程基础从入门道掌握
 - so注册入口分析
 - 异步任务、消息体校验、文件读写、正则表达式转换
 - 方法签名及JS与Native互相调用
 - 本地引用、弱引用、全局引用
 - Napi多线程编程
 
 -  Napi组件原理与流程分析
- NativeEngineJS引擎抽象
 - NodeApi接口函数和上下文环境配置
 - C++和TS数据传递交互、异步任务、Promise函数
 - native_engine源码实现QuickJS、VB、ArkTS源码理解
 
 -  Napi管理模块
- 模块加载、模块信息缓存
 - 鸿蒙so文件加载源码分析
 - C++代码从编译到执行全流程梳理
 - JS对象和C类型转换规则、函数对象封装
 
 -  Napi引用和生命周期管理
- 引用管理和生命周期管理的目的和作用
 - ScopeManager源码分析和理解
 - ReferenceManager源码分析
 - 编译脚本、模块入口、JS对象关系绑定
 - Ark编译eTS虚拟机
 - EcmaVm对象获取、C对象和JS对象转换规则、TaskPoolThread和函数
 
 -  内存管理与容器(智能指针)
- 结合JAVA内存管理体系引出C++中内存管理的思考
 - 地区管理问题与智能指针出现的目的;
 - 智能指针分类详解
 - 智能指针的运用详解
 
 -  鸿蒙底层线程管理
- 从内核角度看进程与线程的实现
 - C++对于线程的控制实现
 - C++线程安全处理策略
 - 线程同步与条件变量
 
 
HarmonyOS高级技能
-  Stage模型进阶——进程通信
- ExtensionAblity组件
 - 进程间通信
 - 线程间通信
 - 任务管理
 - Stage模型应用配置文件
 
 -  安全技能
- 访问控制
 - 用户认证
 - 通用密钥库
 - 加密算法库框架
 - Hap包签名工具
 
 -  任务管理
- 后台任务
 - 后台代理提醒
 
 -  鸿蒙系统设备管理
- USB服务
 - 位置
 - 传感器
 - 振动
 - 多模输入
 - 升级服务
 - 设备使用信息统计
 
 -  WebGL
- WebGL开发概述
 - WebGL开发
 
 -  国际化
- 国际化开发概述
 - Intl开发
 - i18n开发
 
 -  应用测试
- 自动化测试框架
 - SmartPerf性能工具
 - wukong稳定性工具
 
 -  DFX面向未来设计
- 应用事件打点
 - 性能打点跟踪
 - 分布式跟踪
 - 错误管理
 - 应用恢复
 
 
初识HarmonyOS内核
-  单间OpenHarmony开发环境
- 获取源码
 - 编译代码
 - GN和Ninja构建流程
 - 烧录开发板
 - 实验OpenHarmony编译与烧写
 
 -  入门案例
- helloworld
 - 外设控制之GPIO输出
 - 外设控制之GPIO中断
 - 外设控制之PWM输出
 - ADC模拟传感器技术
 - I2C接口开发
 - UART串口通信
 - 实验:智能家居——客厅设备开发实验
 
 
实战就业级设备开发
-  鸿蒙系统移植和裁剪定制
-  系统移植
- 系统裁剪与定制
 
 
 -  系统移植
 -  鸿蒙南向内核级设备开发
-  鸿蒙物联网开发 实战
- 多媒体开发
 
 
 -  鸿蒙物联网开发 实战
 -  鸿蒙南向驱动开发
- 驱动和HDF开发概述
 - 驱动开发步骤
 - 驱动加载
 - HCS驱动服务管理
 - 驱动消息机制管理
 - 配置管理
 - 实验HDF开发实例
 
 
