目录

鸿蒙HarmonyOS认证学习资料整理

【鸿蒙】HarmonyOS认证学习资料整理

第1章、HarmonyOS概述

概念

HarmonyOS是全场景分布式智慧系统。

HarmonyOS是一款面向万物互联时代、全新的分布式操作系统。

超级终端

https://i-blog.csdnimg.cn/blog_migrate/c8612c4ec6f21aac11b712f9e88afc73.png

功能机:软件整体升级不可分割,预装应用与操作系统绑定,有限功能

智能机:应用与操作系统分离,软件实现按需所得,但仍受硬件限制

超级终端:硬件通过网络连接,实现在逻辑上的一体,新的软硬件生态

HarmonyOS系统定位

一款面向万物互联的操作系统——每个人的IoT设备逐年增加。

构建全场景体验:

全场景 ——移动办公、运动健康、社交通信、媒体娱乐等

新硬件 ——软件定义硬件、设备间实现系统级融合、灵活按需适应不同场景

新交互 ——以人(手机)为中心、设备间主动感知、智能协同

新服务 ——服务直达、可分可合、跨设备按需流转(可分可合可流转)

https://i-blog.csdnimg.cn/blog_migrate/0da079375e3c7b53dde21f2357d8c4d6.png

HarmonyOS三大特性

硬件互助,资源共享——超级终端

一次开发,多端部署

统一OS,弹性部署

Harmony架构

横向纵向两个维度划分:

1、从上到下分4层:内核层、系统服务层、框架层、应用层

2、横向分3层:系统 ->(子系统集 ->)子系统 ->模块/功能(功能可裁剪)

https://i-blog.csdnimg.cn/blog_migrate/535087821e2b8397b2edef6f26d73449.png

内核层:

1、内核层分为2块:内核子系统和驱动子系统

2、多内核设计,通过KAL来适配对接多个内核,满足多种设备level的需求

3、目前支持三种内核:lieos_m、liteos_a、linux(分别为轻量、小型、(标准)、大型。可以扩展更多的内核,只需实现相应的KAL层适配),HCIA认证主要关心的是liteos_m内核

https://i-blog.csdnimg.cn/blog_migrate/3a8923efcda21228a67e587d3ed7faa0.png

正确理解:硬件生态开放、统一外设访问能力、硬件驱动框架(HDF)的驱动开发框架、驱动管理框架

系统服务层:

1、根据不同设备形态的部署环境,各个子系统内部可以按照子系统颗粒度裁剪,每个子系统内部又可以按照功能粒度裁剪

2、系统服务层将OS底层能力封装成service,向上层应用提供service API

3、系统服务层是HarmonyOS的framework的核心部分(中间件)

框架层:

1、框架层的三个组成部分:应用程序框架、Ability框架、UI框架

2、三个框架都属于系统基本能力子系统集

应用层:

1、FA(feature ability,有UI界面,提供与用户交互能力)和PA(particle ability,无UI界面,提供后台运行任务能力)是应用的组成积木,就是HarmonyOS的原子化服务

2、FA在进行用户交互时所需的后台数据访问也需要由对应的PA提供支撑

应用服务智能分发

1、开发HarmonyOS应用,其实就是写需要的多个FA和PA

2、同一个PA/FA可以部署到多个不同设备中

3、同一个功能/模块,在不同的设备中可能需要设计不同的FA

4、开发应用时,要考虑好可能的场景和支持的设备,写好所有必要的FA和PA,打包成app

5、运行时根据实际参与超级终端的设备及其属性,智能分发必要的FA和PA(以hap包来分发,一个设备跑一个hap)

6、这就是HarmonyOS应用开发的所谓“一次开发、多端执行”的背后原理

HarmonyOS系统安全

在搭载HarmonyOS的分布式终端上,可以确保“ 正确的人,通过正确的设备,正确地使用数据 ”。

  • 通过“ 分布式多端系统身份认证 ”来保证“正确的人”——协同互助认证(手机帮手环认证人脸识别)、零信任模型、多因素融合认证(不同设备标识同一用户的认证)
  • 通过“ 在分布式终端上构建可信运行环境 ”来保证“正确的设备”——设备证书认证(证书中心发放证书,证书私钥预置到产线的设备中,保存到设备TEE环境中)、安全启动(确保程序完整未篡改)、(硬件)可信执行环境(TEE)
  • 通过“ 分布式数据在跨终端流动的过程中,对数据进行分类分级管理 ”来保证“正确地使用数据”——围绕数据的生成、存储、使用、传输以及销毁过程进行全生命周期的保护

TEE环境

1、TEE, Trusted Execution Environment,即 可信执行环境

2、REE, Rich Execution Environment,即 所有移动设备通用的环境,运行通用的 OS

3、TEE需要硬件支持,不是纯软件能实现的

4、可以简单理解为整个系统由TEE和REE两部分组成(双系统),TEE是绝对安全的,REE只能通过受限API来访问TEE

PKI证书

1、通信中数据安全靠加密,加密分对称加密和非对称加密2大类

2、对称加密的密钥传输困难所以用得少,而 非对称加密 更实用

3、参考百度百科中" “词条,来理解非对称加密原理, 公钥和私钥 概念

4、PKI,Public Key Infrastructure,公开密钥基础设施,指的是证书的制作和分发的一种机制。在这个机制的保障前提下,进行可信赖的网络通信。PKI的基础技术包括加密、数字签名、数据完整性机制、数字信封、双重数字签名等

HarmonyOS关键特性

硬件互助,资源共享——超级终端

一次开发,多端部署

统一OS,弹性部署

分布式技术

包括:分布式软总线、分布式数据管理、分布式文件管理、分布式任务调度、分布式设备虚拟化

分布式软总线 :是基础,是底层通信机制(WIFI、BLE等)的软件包装和管理

分布式数据管理 :业务与数据分离,跨设备产生、存储和使用数据和本地一样方便

分布式文件管理 :跨设备文件访问和访问本地文件一样方便

分布式任务调度 :跨设备对应用进行远程启动、远程调用、远程连接以及迁移

分布式数据管理、分布式文件管理、分布式任务调度,这三个是分布式在系统服务层的封装,都会调用到分布式软总线。

分布式设备虚拟化 :是分布式在系统应用层从效果出发的描述

一次开发,多端部署

  • 此处指的是HarmonyOS应用开发,不是南向设备固件开发
  • 应用开发IDE提供相应模板和机制,便于app开发者开发场景式app
  • HarmonyOS应用云市场提供相应签名、分发等机制,确保hap合理组织成app,再部署到独立设备中
  • FA和PA保证了app的可分发可运行,分布式特性保证了跨设备和设备内一样的编程方法和使用体验
  • 各独立设备运行HarmonyOS,保证了端侧hap的适配和执行

统一OS,弹性部署

  • 此处说的是HarmonyOS设备开发,不是北向应用开发了

  • HarmonyOS从源码结构、软件工具、业务流程等方面会提供支撑,让设备上弹性部署HarmonyOS

  • 可裁剪性

    https://i-blog.csdnimg.cn/blog_migrate/3536a67c77499fb799d1772412a16795.png

第2章、设备开发入门

可能存在的考点

1、设备端开发语言,C/C++

2、开发环境:Windows+Linux(ubuntu),Windows做编辑、烧录;Linux做编译

3、环境搭建中安装的各个软件是干嘛的

https://i-blog.csdnimg.cn/blog_migrate/568f057156ca4fb08bf3ff4f662089fb.png

4、设备开发流程几个步骤、顺序

https://i-blog.csdnimg.cn/blog_migrate/469a6379b511d0a42e1f5c9fbb7796c5.png

5、设备开发的IDE是DevEco Device Tool,应用开发是DevEco Studio

6、DevEco Device Tool是基于VSCode的插件式设计

OpenHarmony目录结构

https://i-blog.csdnimg.cn/blog_migrate/0580855f5d68a3d942ada97369919a17.png

applications目录:

https://i-blog.csdnimg.cn/blog_migrate/39d36951ad1488b4923696b80d858fa3.png

base目录:

https://i-blog.csdnimg.cn/blog_migrate/769d0a7631e536d1726e23fc6998a5a5.png

foundation目录:

https://i-blog.csdnimg.cn/blog_migrate/8cca983bd82794aa9e9e36ced6f54d9f.png

OpenHarmony分层接口

为什么需要标准接口

1、为了解耦,便于模块化

2、 此处主要是讲OS kernel和应用之间的接口,标准接口是为了应用程序可移植性

https://i-blog.csdnimg.cn/blog_migrate/f405b6571d04e10f126ead7225a99deb.png

CMSIS

1、Cortex Microcontroller Software Inteface Standard

2、ARM专为Cortex-M系列单片机设计的微控制器软件接口标准

3、CMSIS有多个分支,鸿蒙用的主要是CMSIS-RTOS,是RTOS API的CMSIS标准

4、CMSIS-RTOS是事实上的RTOS API行业标准,很多rtos都乐意去支持

目前HarmonyOS的liteOS-M、liteOS-A适用。

https://i-blog.csdnimg.cn/blog_migrate/a5ec2303c5fc62263dc510e6db3b1286.png

POSIX

1、Potable Operating System Interface 可移植操作系统接口

2、POSIX被linux、windows、android、HarmonyOS等众多主流OS所支持,历史悠久

3、POSIX是事实上的linux级别的OS的API标准

4、在POSIX兼容的kernel之间,移植app是比较简单的

目前harmonyOS的linux内核适用。

组件开发与hpm

组件开发思想的理解

1、为了模块化

2、bundle.json,组件包内容的程序化描述

3、README.md,组件说明文档

4、LICENSE,组件发布许可证

5、script,多个组件打包成发行版时使用的脚本

https://i-blog.csdnimg.cn/blog_migrate/09799a403fe1a09ca0a55a65ad6f67f9.png

组件与发行版的异同对比

https://i-blog.csdnimg.cn/blog_migrate/cf1855a61ee3a77d925090c318471de3.png

hpm概念

1、hpm,全称 HarmonyOS Package Manager

2、主要功能: 获取源码、执行安装、编译、打包、升级操作

hpm操作命令

hpm init -t dist 				初始化安装目录
hpm install @ohos/wifi_iot		安装wifi_iot这个发行版	
hpm dist						编译打包并发行,结果是out目录下生成了可烧录镜像

第3章、内核基础

HarmonyOS的进程与线程

1、HarmonyOS采用 抢占式内核 设计。同时, 同优先级的多个线程间采用时间片轮转调度 。(这里讲的内核指的是liteos_a内核)

2、 优先级范围0-31 ,共32个,数字越小优先级越高。内核进程范围是0-9(10个),用户进程范围是10-31(22个)

3、总结:liteos_a内核和linux内核非常像,显著差异就是liteos_a是抢占式,而linux是非抢占式

https://i-blog.csdnimg.cn/blog_migrate/3b8ed7f729b1751d0bcd8cf97914c774.png

4、 多核CPU ,进程/线程,保护/防冲突用 自旋锁 。自旋锁是一种阻塞式设计。

5、 负载均衡 是为了提升效率,让多个任务在多个CPU核心之间尽量平均分配。

https://i-blog.csdnimg.cn/blog_migrate/1d26f82727a4e852775c402dc0ca10a1.png

线程管理

https://i-blog.csdnimg.cn/blog_migrate/e768f862d9c71bb8b31aaf4600ff5ad6.png

https://i-blog.csdnimg.cn/blog_migrate/8ecadc86e6bc97970e19dc7ce451b1da.png

HarmonyOS的线程采用抢占式调度机制。如果处于ready状态的多个任务不是一个优先级,直接抢占决策。如果是同一个优先级怎么办?有2种策略可选: SCHED_RRSCHED_FIFO

对处于ready状态的同样优先级的任务。SCHED_RR是分配给每一个任务一个特定的时间片(默认是10ms),然后轮转依次运行(各线程分配10ms循环执行)。而SCHED_FIFO则是让一个任务运行完再调度下一个任务,而顺序就是依照创建的先后(FIFO先进先出,先的执行完后才能执行下一个)。

HarmonyOS线程常用的两种锁: 互斥锁(共享-独占锁)读写锁https://i-blog.csdnimg.cn/blog_migrate/62fe71c2bb9f14578dbf590e5f86c5fd.png

总结:

liteOS-M 和 liteOS-A 都是抢占式的,进程和线程都是抢占式的,而Linux是非抢占式的; liteOS-A 和

Linux 进程线程都有,而 liteOS-M只有线程;

多核CPU,进程/线程间,用自旋锁;

单CPU,单进程中的线程间,用互斥锁或读写锁;

HarmonyOS的内存、网络和文件系统

https://i-blog.csdnimg.cn/blog_migrate/b094c92dd16df42bfb787c2e177fc88b.png

https://i-blog.csdnimg.cn/blog_migrate/b4c2aa2ee8a3ae10b030ed6b33e04d74.png

https://i-blog.csdnimg.cn/blog_migrate/6d3e5eb6ed014325b8cbf9afae8aa2ea.png

https://i-blog.csdnimg.cn/blog_migrate/bf1c1a6ffce2a4de4e68d82058f6159a.png

https://i-blog.csdnimg.cn/blog_migrate/5b417fef81f5faa97c00d55bdd022a9d.png

https://i-blog.csdnimg.cn/blog_migrate/0b6d51396de57e7da5be0b5b9f17cfc7.png

其他内核基础知识

https://i-blog.csdnimg.cn/blog_migrate/7b94a0ca79f284137f63c677e2dbe42d.png

https://i-blog.csdnimg.cn/blog_migrate/3b8e459756d1d709c41b9b7b50aa697f.png

https://i-blog.csdnimg.cn/blog_migrate/2c89e29b2b5ddac6f7b177d8381d143d.png

https://i-blog.csdnimg.cn/blog_migrate/c3cc6c24694636f3eb96c9776fca5005.png

https://i-blog.csdnimg.cn/blog_migrate/0f3cca37f6ae07509eba4fa64c95bc82.png

第4章、驱动基础

HDF驱动模型

https://i-blog.csdnimg.cn/blog_migrate/0c8680a995a72f96cf5172df1a8a57ba.png

https://i-blog.csdnimg.cn/blog_migrate/d3ee5a1300858cc388239fb9e01ee8e8.png

https://i-blog.csdnimg.cn/blog_migrate/1b823fa22cbcd803a922648f605dc24b.png

https://i-blog.csdnimg.cn/blog_migrate/2e42b0f32b64cdca24ccf2b3b1c6efb3.png

HDF驱动开发

https://i-blog.csdnimg.cn/blog_migrate/3010587f8c1fb52440ac8cf69e2bd293.png

https://i-blog.csdnimg.cn/blog_migrate/8136fe0068e7a3f50a9ea6d82c85d210.png

https://i-blog.csdnimg.cn/blog_migrate/f94b0f4ad68eb5831dc97f8bb6de5ab6.png

https://i-blog.csdnimg.cn/blog_migrate/244a81cde1b4785230290d6eaa8234d7.png

https://i-blog.csdnimg.cn/blog_migrate/1d6f3439cbcad27eaca8a00b6ff36e88.png

驱动平台介绍

https://i-blog.csdnimg.cn/blog_migrate/f070ecfcae5d7de397747e5e7045ee09.png

https://i-blog.csdnimg.cn/blog_migrate/26c1fe11695e92fc4ba15e2a5741cc72.png

https://i-blog.csdnimg.cn/blog_migrate/42afbbf049b3d5ddf597fd610874a2fc.png

https://i-blog.csdnimg.cn/blog_migrate/1cd5fa4f7c873326a835dece5b6e78d1.png

https://i-blog.csdnimg.cn/blog_migrate/87c55ac4f82a2e79da7a2849d67f99f3.png

https://i-blog.csdnimg.cn/blog_migrate/bcede016c14e21339a6890b8a30af99c.png

https://i-blog.csdnimg.cn/blog_migrate/4d63863eb76e53c6f92f9200402996ef.png

https://i-blog.csdnimg.cn/blog_migrate/f3e639a64b889a70c863de23c9d1dcf9.png

时钟极性CPOL 对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。 时钟相位CPHA 能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。

CPOL和CPHA的两个设置可以从时钟信号的图来看,CPOL的值与时钟信号初始值一致,CPHA=0第一个跳边沿(时钟前沿)采集,CPHA=1第二个跳边沿(时钟后沿)采集。

https://i-blog.csdnimg.cn/blog_migrate/c4d07dd42401ae34b7701a70547b6b1c.png

https://i-blog.csdnimg.cn/blog_migrate/91849b44aaee44d4bcfceaeb2524a0ab.png

https://i-blog.csdnimg.cn/blog_migrate/3c406671244da2ce0f785b8dcd4c37ee.png

RTC的晶振频率是32.768KHz

https://i-blog.csdnimg.cn/blog_migrate/6ff6807af453b7ccd7673da9bbb20539.png

https://i-blog.csdnimg.cn/blog_migrate/bc1a5bb6235e325f1e72ef06ab1dcd81.png

例子:

编码值(譬如8位) 电压值 物理量值(譬如温度值)

范围0-255 0-3.3V 0-33度

解题思路:搞清楚物理量、电压值、编码值三者之间的2个对应关系。剩下的其实就是按比例算

出题1:编码值是11011011,问是多少度? 13 16+11=219,x=33 (219/256)=28度

出题2:已知是15度,问编码值是多少? 15/33=x/256,x=116,再把116换算成二进制值(思路:十进制先转十六进制,再转二进制。116 = 0x74 = 0b01110100)

https://i-blog.csdnimg.cn/blog_migrate/8df0f00a52b65189fa131068d987e501.png

第5章、基础子系统开发

HarmonyOS的编译构建子系统

https://i-blog.csdnimg.cn/blog_migrate/d1519db4eaeeee7d69a092c79247b9b3.png

gn和ninja

传统GNU开发工具:写Makefile管理工程,用make工具来构建。

改进版:因为makefile手写很难,就有了cmake,改进成了写camke的list文件,用cmake工具将其转为Makefile,再用make进行构建。

鸿蒙的再改进版(来自于google):用gn来替代cmake,用ninja来替代Makefile。开发者写gn配置文件就行了,语法简单。

https://i-blog.csdnimg.cn/blog_migrate/ef72b0ee4f6691d41dd574888fe460ff.png

编译构建过程

鸿蒙的hb

(1)hb是鸿蒙专为build开发的一个工具软件,hb其实就是harmonyos build的缩写

(2)hb的用法是hb cmd arg,有多个cmd

(3)hb set 命令从来设置编译的鸿蒙源码目录

(4)hb build -f 命令用来编译构建选中的开发板

https://i-blog.csdnimg.cn/blog_migrate/79d927f7e15b25fa9325be33723191af.png

https://i-blog.csdnimg.cn/blog_migrate/3e2621cf2487c9877c12ab98ad194750.png

HarmonyOS的分布式远程启动

https://i-blog.csdnimg.cn/blog_migrate/c4c1b86e3f30488d0e02fae48e752c9c.png

https://i-blog.csdnimg.cn/blog_migrate/386ba890a5551faf1a18820ce487f69e.png

https://i-blog.csdnimg.cn/blog_migrate/df4fb2e5a029a91c737bbac9c2232f1b.png

HarmonyOS的公共基础与OTA升级

https://i-blog.csdnimg.cn/blog_migrate/dbfca63af456f4b1acf9a038257ba6d0.png

公共基础库:

通用的操作可以直接调用现成的库函数,包括文件操作、数据库操作等。避免“重复造轮子”。

由鸿蒙开发者实现公共基础库,设备应用开发者拿来即用。

https://i-blog.csdnimg.cn/blog_migrate/0540b58d7060d836f923d6595ce7f5e7.png

HarmonyOS的启动恢复

https://i-blog.csdnimg.cn/blog_migrate/a45774a0803b654fae66db1ceba4665a.png

https://i-blog.csdnimg.cn/blog_migrate/d4c60a27b10b090cd0ac10480f735035.png

https://i-blog.csdnimg.cn/blog_migrate/ed5445ff4e1a590b69ccb63eb32807a4.png

https://i-blog.csdnimg.cn/blog_migrate/2bc64ff9650e2c1cab0e4c45c8a436b7.png

https://i-blog.csdnimg.cn/blog_migrate/90755dc5ea2b8e2b250bad6286da7737.png

https://i-blog.csdnimg.cn/blog_migrate/7cbf0490d1c9a21f437e6b92da5bffe8.png

HarmonyOS的软总线

https://i-blog.csdnimg.cn/blog_migrate/9319d44f1fa20d5578b981a19a7367a8.png

第6章、扩展子系统开发

HarmonyOS的图形图像媒体子系统

https://i-blog.csdnimg.cn/blog_migrate/3d6156563d39059e3d9e450039e9cc5f.png

https://i-blog.csdnimg.cn/blog_migrate/5d6b48feea30b9435bd683addd266041.png

https://i-blog.csdnimg.cn/blog_migrate/5b44db226881bc1bef88647b20953538.png

https://i-blog.csdnimg.cn/blog_migrate/d843a1e636563dfdf8a5d494a754417a.png

https://i-blog.csdnimg.cn/blog_migrate/4b99180c6ae8f9d7aa243ed74aa30a34.png

https://i-blog.csdnimg.cn/blog_migrate/3ebd87b2989d1e56bd2699b81272c476.png

HarmonyOS的AI框架和Sensor框架与用户程序框架

https://i-blog.csdnimg.cn/blog_migrate/36a073e2c59e4c329ffaa883785d551f.png

https://i-blog.csdnimg.cn/blog_migrate/8aba2ad765c03b8ff3ffe790a425c557.png

https://i-blog.csdnimg.cn/blog_migrate/a89354cce38b688af3f1b0f1c220d75b.png

https://i-blog.csdnimg.cn/blog_migrate/6548e0083089e1c9e21303828d9e598f.png

https://i-blog.csdnimg.cn/blog_migrate/e2a8c753bb0cb5eecb46b28cd4044b7f.png

https://i-blog.csdnimg.cn/blog_migrate/3a5eb5267067f5329c357c01659a06ad.png

HarmonyOS的剩余几个框架

安全框架

https://i-blog.csdnimg.cn/blog_migrate/2988fc694188bc194e639486b7dc7f4c.png

https://i-blog.csdnimg.cn/blog_migrate/16953685de9d0ae1c92389da505195a8.png

测试框架

https://i-blog.csdnimg.cn/blog_migrate/a859c5e4ecec7a6b2eb02144e3f32233.png

DFX框架

https://i-blog.csdnimg.cn/blog_migrate/4bee0470178c4ada54f6beb99c72966f.png

https://i-blog.csdnimg.cn/blog_migrate/c3280018dd96deee9efec982ae2e3853.png

XTS框架

https://i-blog.csdnimg.cn/blog_migrate/ff762a75a94e348a0f4dc7032aea772b.png

https://i-blog.csdnimg.cn/blog_migrate/5f57f5bbe58f1d0450f8cad5f00c0ae3.png

第7章、功能调测

HarmonyOS的shell命令

https://i-blog.csdnimg.cn/blog_migrate/e48695ebd985bc6d47fb5a47e5f077e3.png

https://i-blog.csdnimg.cn/blog_migrate/45fc505790538b0bd05d48fbe0ca55ed.png

https://i-blog.csdnimg.cn/blog_migrate/b72f331802d93b7e1b726954bcdc52bc.png

https://i-blog.csdnimg.cn/blog_migrate/bc4d77b89b2018e4666c9ee6aed49b96.png

https://i-blog.csdnimg.cn/blog_migrate/f45150e7583d86b54da450d18aaec004.png

接下来重新编译内核,

make clean;

make;

再使用help即可查看所有已注册的命令。

动态注册 基本一致,需要注意的是:1、动态注册的函数写在应用程序中;2、动态注册函数入参不需要静态注册时的第一个参数(全局变量名),因此也不需要在mk文件中添加编译选项;3、因为是liteos-m内核,应用和内核是编在一起的,因此不管是静态还是动态,都需要重新编译。

HarmonyOS自带的shell命令

https://i-blog.csdnimg.cn/blog_migrate/d06673000c69c67aa79c89e71e6f994e.png

https://i-blog.csdnimg.cn/blog_migrate/a333ae72f4974f3ebe4a0a1c5dcbaa9b.png

https://i-blog.csdnimg.cn/blog_migrate/4ff23505920006c59b8bd89f6405ebd7.png

https://i-blog.csdnimg.cn/blog_migrate/ea01edd29f29f2da7cedfb75ebdbe4f7.png

https://i-blog.csdnimg.cn/blog_migrate/c38e06765363dc26a4b56b056af43973.png

https://i-blog.csdnimg.cn/blog_migrate/31bb000f15e6424a93c433b1f28965a7.png

第8章、HarmonyOS的移植

https://i-blog.csdnimg.cn/blog_migrate/844f3f786ac755d644bb5e6e4acaea16.png

https://i-blog.csdnimg.cn/blog_migrate/35662daa0f20f55b73659571895d2e60.png

https://i-blog.csdnimg.cn/blog_migrate/043644412d09b849e63487bac9585cb1.png

https://i-blog.csdnimg.cn/blog_migrate/8c4119b37e6e64ee8a30846001ecf7c9.png

https://i-blog.csdnimg.cn/blog_migrate/ef84376d5784d7abbadb098dfb910eb9.png

https://i-blog.csdnimg.cn/blog_migrate/f7a6be8e6350e72cafadcf477e161ced.png

第三方库移植

https://i-blog.csdnimg.cn/blog_migrate/5c909ed96d18bae0ba7bfd5ad41ef27f.png

https://i-blog.csdnimg.cn/blog_migrate/143b4209b9b5ab91220f60eff3a7f5bf.png