什么是HarmonyOS学习笔记(未更完)

0.说在前面

    笔记主要是我自己看的,顺带希望能帮助其他人解决问题。
    如果有问题可以指出!因为初学不太了解顺序方面可能也是有bug的。

1.什么是操作系统(OS)?

    网上搜到的定义:操作系统是管理计算机硬件与软件资源的计算机程序。操作系统可以对计算机系统的各项资源板块开展调度工作,运用计算机操作系统可以减少人工资源分配的工作强度。
    如果简单描述一下用户、硬件、软件和操作系统之间的关系(使用步骤),我称之为:搭载在硬件上的操作系统,运行着专门为该操作系统开发的软件,被用户使用着。
    运行着专门为该操作系统开发的软件:这句话我的意思是,比如微信,有iOS版本,Android版,Windows版、MacOS版,微信的开发团队是需要为这些不同的操作系统做相应的适配,以满足软件在该操作系统上正常使用。
    实际上把操作系统剥开了说,有进程管理、存储器管理、设备管理、中断处理等等功能,而根据操作系统开发时以什么功能为主,或者说联系形式,也分为了宏内核和微内核。

2.常见的操作系统有哪些?

    Unix、Linux、Windows、MacOS、iOS、Android。

系统定位(四代)

    指Unix,电脑系统,手机系统,到鸿蒙系统(分布式系统)。

3.简要说明HarmonyOS

    HarmonyOS在我写下这句话的时候,单指华为鸿蒙系统,而它与OpenHarmony的关系好比java中的父子类。在java中我们写的一些子类发现有共同点便将这部分共同的代码抽取出来作为父类。而HarmonyOS是由华为公司抽取出核心代码交由开放原子开源基金会(OpenAtom Foundation),所以就结果来看,HarmonyOS是子类闭源,OpenHarmony是父类开源。
    HarmonyOS=OpenHarmony+HMS(华为移动服务)+Android open source Project(其他开源代码项目:因为让开发者再去写一个华为鸿蒙操作系统的微信/QQ麻烦,也不一定愿意写,所以有现成的就用现成的叭~)
    贴一下区别:
        OpenHarmony非华为所有,华为是主要贡献值和共建者。
        HarmonyOS是华为开发的面向多种全场景智能设备的商用版本,由华为消费者BG承接。

4.HarmonyOS三大特征

4.1硬件互助,资源共享

    搭载该操作系统的设备在系统层面融为一体、形成超级终端,让设备的硬件能力可以弹性扩展,实现设备之间硬件互助,资源共享。
    对消费者而言,HarmonyOS能够将生活场景中的各类终端进行能力整合,实现不同终端设备之间的快速连接、能力互助、资源共享,匹配合适的设备、提供流畅的全场景体验。
    就类似与小米的那些产品都可以由手机操控一样,但是非小米的设备就会变慢或者不能连接。未来可能就会是这样的场景:只要是操作系统使用的OpenHarmony的话,就能实现小米鸿蒙的手机可以控制美的鸿蒙的冰箱了。

4.1.1分布式软总线

    HarmonyOS官方技术特性
    官方解释:分布式软总线是手机、平板、智能穿戴、智慧屏、车机等分布式设备的通信基座,为设备之间的互联互通提供了统一的分布式通信能力,为设备之间的无感发现和零等待传输创造了条件。开发者只需聚焦于业务逻辑的实现,无需关注组网方式与底层协议。(可以简单理解成一个虚拟的网线。)

4.1.2分布式设备虚拟化

    官方解释:分布式设备虚拟化平台可以实现不同设备的资源融合、设备管理、数据处理,多种设备共同形成一个超级虚拟终端。针对不同类型的任务,为用户匹配并选择能力合适的执行硬件,让业务连续地在不同设备间流转,充分发挥不同设备的能力优势,如显示能力、摄像能力、音频能力、交互能力以及传感器能力等。

    官方举的两个例子我个人觉得挺好理解的,这里也搬过来一下。

  • 视频通话场景:在做家务时接听视频电话,可以将手机与智慧屏连接,并将智慧屏的屏幕、摄像头与音箱虚拟化为本地资源,替代手机自身的屏幕、摄像头、听筒与扬声器,实现一边做家务、一边通过智慧屏和音箱来视频通话。
  • 游戏场景:在智慧屏上玩游戏时,可以将手机虚拟化为遥控器,借助手机的重力传感器、加速度传感器、触控能力,为玩家提供更便捷、更流畅的游戏体验。

4.1.3分布式数据管理

    官方解释:分布式数据管理基于分布式软总线的能力,实现应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,跨设备的数据处理如同本地数据处理一样方便快捷,让开发者能够轻松实现全场景、多设备下的数据存储、共享和访问,为打造一致、流畅的用户体验创造了基础条件。

    这里也是官方举的例子。

  • 协同办公场景:将手机上的文档投屏到智慧屏,在智慧屏上对文档执行翻页、缩放、涂鸦等操作,文档的最新状态可以在手机上同步显示。
  • 照片分享场景:出游时,使用手机拍摄的照片,可以在登录了同帐号的其他设备,比如平板上更方便地浏览、收藏、保存或编辑,也可以通过家中的智慧屏上同家人一起分享记录下的快乐瞬间。

4.1.4分布式任务调度

    官方解释:分布式任务调度基于分布式软总线、分布式数据管理、分布式Profile等技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、远程连接以及迁移等操作,能够根据不同设备的能力、位置、业务运行状态、资源使用情况,以及用户的习惯和意图,选择合适的设备运行分布式任务。
    下图以应用迁移为例,简要地展示了分布式任务调度能力。

    这两个例子推荐代入一个你正在接一个很要紧的电话,然后需要看导航需要看外卖到哪里了的场景。

  • 导航场景:如果用户驾车出行,上车前,在手机上规划好导航路线;上车后,导航自动迁移到车机和车载音箱;下车后,导航自动迁移回手机。如果用户骑车出行,在手机上规划好导航路线,骑行时手表可以接续导航。
  • 外卖场景:在手机上点外卖后,可以将订单信息迁移到手表上,随时查看外卖的配送状态。

4.1.5分布式连接能力

    分布式连接能力提供了智能终端底层和应用层的连接能力,通过USB接口共享终端部分硬件资源和软件能力。开发者基于分布式连接能力,可以开发相应形态的生态产品为消费者提供更丰富的连接体验。

    这个我脑子并没有get到什么东西,大概就是用数据线接一个副屏的那种意思(吗?)。贴官方的解释叭。
    分布式连接能力包含底层能力(Connect Service)和应用层能力(AILife Client Service)。

    底层能力(Connect Service)涉及如下模块:

  • 终端USB:智能终端侧USB模块,可对USB生态产品供电,是连接智能终端和生态产品的物理接口。
  • 接入管理:智能终端统一对外提供的接口,用于和生态产品进行通信。
  • 通信框架:统一管理搜网、信号显示,通过接入管理模块对外提供接口。

    应用层能力(AILife Client Service)涉及如下模块:

  • 智慧生活:生态产品的公共开发平台,能够接入USB生态设备并创建接入卡片。

    典型应用场景举例:

    基于分布式连接能力,可以通过开发生态配件拓展智能终端的通信能力:

  • USB模块:生态配件侧USB模块,用于和智能终端USB建立物理连接。
  • 功能模块:生态合作伙伴根据需求开发设备系统和功能。
  • 配件插件:生态合作伙伴基于AILife Client Service能力开发生态配件功能。

4.2一次开发,多端部署

    面向开发者,实现一次开发,多端部署。
    对应用开发者而言,HarmonyOS采用了多种分布式技术,使应用开发与不同终端设备的形态差异无关,从而让开发者能够聚焦上层业务逻辑,更加便捷、高效地开发应用。(HarmonyOS提供了用户程序框架、Ability框架以及UI框架,支持应用开发过程中多终端的业务逻辑和界面逻辑进行复用,能够实现应用的一次开发、多端部署,提升了跨设备应用的开发效率。)

    这个就和java的一次开发,多端部署特点很像,目的都是让开发者方便点。
    开发的应用主要是会部署到各类设备,对于屏幕的适配就需要考虑,关于这个,官方文档是这么说的:其中,UI框架支持使用ArkTS、JS、Java语言进行开发,并提供了丰富的多态控件,可以在手机、平板、智能穿戴、智慧屏、车机上显示不同的UI效果。采用业界主流设计方式,提供多种响应式布局方案,支持栅格化布局,满足不同屏幕的界面适配能力。

4.3统一OS,弹性部署

    一套操作系统可以满足不同能力的设备需求,实现统一OS,弹性部署。
    对设备开发者而言,HarmonyOS采用了组件化的设计方案,可根据设备的资源能力和业务特征灵活裁剪,满足不同形态终端设备对操作系统的要求。
    打个比方我写的这个系统预设是包含电话子系统,但是实际部署到手环/手表的时候不需要这个打电话功能,对于开发者的我来说,不需要重新再写一个摘掉了这个电话子系统的系统,HarmonyOS会自动在部署的时候帮我摘掉。下面是官方文档给予的概括性说明。

  • 支持各组件的选择(组件可有可无):根据硬件的形态和需求,可以选择所需的组件。
  • 支持组件内功能集的配置(组件可大可小):根据硬件的资源情况和功能需求,可以选择配置组件中的功能集。例如,选择配置图形框架组件中的部分控件。
  • 支持组件间依赖的关联(平台可大可小):根据编译链关系,可以自动生成组件化的依赖关系。例如,选择图形框架组件,将会自动选择依赖的图形引擎组件等。

5.HarmonyOS支持的开发语言

    应用开发导读(Java)
    随着版本更新,JAVA(+XML)已经退出了HarmonyOS的SDK的API Version 7(ohos是压根就不支持java的),但是想用java开发的话,还是可以使用之前版本的API。
    应用开发导读(eTS)
    而java退下后,顶上来的就是eTS(extended TypeScript),同样也就是在HarmonyOS的SDK的API Version 7加上的。
    设备那边用的是C/C++,我不太懂了。
    其他就还有JS(JavaScript)、CSS(Cascading Style Sheets)和HML(HarmonyOS Markup Language)。

6.eTS和JS的区别

    js本身是弱类型,而eTS是包含了js,然后进行了增强,比如强类型、接口、命名空间等。
    因为浏览器还是解析js的,不支持解析eTS,所以实际上eTS底层还是把代码解析成js交给浏览器运行。
    这样不难看出,js是比eTS快的,所以js适合给轻量级设备开发,而eTS就是适合标准设备(一般就是说手机咯)。

7.技术架构

    HarmonyOS官方系统定义
    HarmonyOS整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。HarmonyOS技术架构如下图所示。

7.1内核层

  • 内核子系统:HarmonyOS采用多内核设计,支持针对不同资源受限设备选用适合的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
                图中展示有Linux Kernel和LiteOS,其中LiteOS属于轻量级内核,用于行车记录仪,手环这类设备,它会自动判定使用的设备然后使用什么内核(内核抽象层干活)。
  • 驱动子系统:硬件驱动框架(HDF,Hardware Driver Foundation)是HarmonyOS硬件生态开放的基础,提供统一外设访问能力和驱动开发、管理框架。

7.2系统服务层

    系统服务层是HarmonyOS的核心能力集合,通过框架层对应用程序提供服务。

  • 系统基本能力子系统集:为分布式应用在HarmonyOS多设备上的运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时、公共基础库、多模输入、图形、安全、AI等子系统组成。其中,方舟运行时提供了C/C++/JS多语言运行时和基础的系统类库,也为使用方舟编译器静态化的Java程序(即应用程序或框架层中使用Java语言开发的部分)提供运行时。
  • 基础软件服务子系统集:为HarmonyOS提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X) 、MSDP&DV等子系统组成。
  • 增强软件服务子系统集:为HarmonyOS提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿戴专有业务、IoT专有业务等子系统组成。
  • 硬件服务子系统集:为HarmonyOS提供硬件服务,由位置服务、生物特征识别、穿戴专有硬件服务、IoT专有硬件服务等子系统组成。
        根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈依劼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值