初识HarmonyOS

文章目录

  • 本章节目标
  • 一、 HarmonyOS简介
    • 初识HarmonyOS
    • HarmonyOS系统定位
    • HarmonyOS典型应用场景
  • 二、HarmonyOS架构与安全
    • 1. HarmonyOS架构解析
      • 内核层
      • 系统服务层
      • 框架层
      • 应用层
      • 应用服务智能分发
    • 2. HarmonyOS系统安全
      • 正确的人
      • 正确的设备
      • 正确地使用数据
  • 三、HarmonyOS关键特性
    • 1. 硬件互助,资源共享
      • 分布式软总线
      • 分布式设备虚拟化
      • 分布式数据管理
      • 分布式任务调度
    • 2.一次开发,多端部署
    • 3. 统一OS,弹性部署
  • 四、HarmonyOS生态
      • HarmonyOS社区运营规划
      • HarmonyOS校园推广
      • 学习推荐
  • 五、本章总结

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

在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备。

本章为HarmonyOS移动应用开发的第一章内容,主要介绍HarmonyOS分布式操作系统的概念、关键技术能力以及HarmonyOS典型的应用场景。

本章节目标

  • 了解HarmonyOS的相关概念和产品定位;
  • 了解HarmonyOS的技术架构;
  • 了解HarmonyOS的关键特性。

一、 HarmonyOS简介

初识HarmonyOS

HarmonyOS小场景 - 导航信息流转

  • HarmonyOS与地图应用深度融合,实现手机+手表的无缝导航信息流转

    • 讨论:场景中需要实现哪些功能点?

    信息的传递协议:  Wi-Fi、蓝牙、移动网络等;

    信息的精准传递:  设备绑定、信息认证等;

    场景切换的判断:  是否流转的判定条件;

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

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

HarmonyOS系统定位

HarmonyOS是一款面向万物互联的操作系统。

HarmonyOS典型应用场景

HarmonyOS以手机为核心,构建1+8+N全场景应用。

HarmonyOS典型应用场景 - 全新办公模式

PC+手机构建具有强大通信能力、高效人机交互和丰富应用生态的新设备。

HarmonyOS典型应用场景 - 跨设备信息流转

手机到手表跨设备业务流转,开创新的生活方式。

二、HarmonyOS架构与安全

1. HarmonyOS架构解析

HarmonyOS整体遵从分层设计,从下向 上依次为:内核层、系统服务层、框架 层和应用层

系统功能按照“系统 > 子系统 > 功能/ 模块”逐级展开,在多设备部署场景下, 支持根据实际需求裁剪某些非必要的子 系统或功能/模块。

内核层

内核层主要包括内核子系统和驱动子系统两个部分。

​ 内核子系统:HarmonyOS采用多内核设计,支持针对不同资源受限设备选用适合的OS内核。 内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能 力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。

​ 驱动子系统:硬件驱动框架(HDF,Hardware Driver Framework)是HarmonyOS硬件生态开 放的基础,提供统一外设访问能力和驱动开发管理框架。

统一驱动框架:驱动与内核解耦,支持运行动态加载,让更多 IoT设备接入超级终端

  • 通过将平台和系统接口进行解耦,来构建统一的驱动平台底座去兼容如Linux、LiteOS等不同内核;
  • 支撑百K级~G级容量的1+8+N设备部署;
  • 根据不同设备形态,支持用户态部署和内核态部署

系统服务层

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

框架层

框架层为HarmonyOS应用开发提供:

  • 用户程序框架:支持Java/C/C++/JS等多种语言;
  • Ability框架:应用所具备能力的抽象;
  • 两种UI框架:适用于Java语言的Java UI框架和适用于JS语言的JS UI框架;
  • 多语言框架API:支持多种软硬件服务对外开放的语言框架。

根据系统的组件化裁剪程度,HarmonyOS设备支持的API也会有所不同。

应用层

应用层包括系统应用和扩展/第三方非系统应用

HarmonyOS的应用分为一个或多个FA(Feature Ability)或PA(Particle Ability)组成。

  • FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及统一的 数据访问抽象。
  • FA在进行用户交互时所需的后台数据访问也需要由对应的PA提供支撑。
  • 基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一 致、高效的应用体验

应用服务智能分发

基于FA/PA构建的新型应用生态,能够实现三方服务跨设备智能分发,提供一致、高效 的用户体验。

2. HarmonyOS系统安全

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

  • 通过“分布式多端协同身份认证”来保证“正确的人”;

  • 通过“在分布式终端上构筑可信运行环境”来保证“正确的设备”;

  • 通过“分布式数据在跨终端流动的过程中,对数据进行分类分级管理”来保证“正确地使用数 据”。

正确的人

在分布式终端场景下, “正确的人”指通过身份认证的数据访问者和业务操作者。 “正 确的人”是确保用户数据不被非法访问、用户隐私不泄露的前提条件。HarmonyOS通过 以下三个方面来实现协同身份认证: 零信任模型 多因素融合认证 协同互助认证

正确的设备

在分布式终端场景下,只有保证用户使用的设备是安全可靠的,才能保证用户数据在虚拟终端上得到有效保护,避免用户隐私泄露。HarmonyOS通过以下三个方面来确保设备 可靠:

设备证书使用示意图

​ 在必须传输用户的敏感数据(如密钥、加密的生物特征等信息)时,会在使用设备证书 进行安全环境验证后,建立从一个设备的TEE到另一设备的TEE之间的安全通道,实现安 全传输。

正确地使用数据

在分布式终端场景下,需要确保用户能够正确地使用数据。HarmonyOS围绕数据的生成、 存储、使用、传输以及销毁过程进行全生命周期的保护,从而保证个人数据与隐私、以 及系统的机密数据(如密钥)不泄漏。

三、HarmonyOS关键特性

1. 硬件互助,资源共享

  • 多种设备之间能够实现硬件互助、资源共享,主要依赖以下四个关键分布式技术。

分布式软总线

分布式软总线是手机、平板、智能穿戴、智慧屏、车机等分布式设备的通信基座,为设备之间的互联互通提供了统一的分布式通信能力,为设备之间的无感发现和零等待传输创造了条件。开发者只需聚焦于业务逻辑的实现,无需关注组网方式与底层协议。

不同设备组成超级终端的核心基础能力,无感自组网

自发现&连接

分布式软总线提出自动发现设备,实现用户零等待的自发现体验,附近同账号的设备自动发现无需等待,自动安全连接。

多设备互联、组网

分布式软总线提出了异构网络组网,自动构建一个逻辑全连接网络,以解决设备间不同协议交互的问题

分布式设备虚拟化

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

分布式数据管理

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

分布式任务调度

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

多设备信息融合,体验智能化健身模式

2.一次开发,多端部署

  • HarmonyOS提供了用户程序框架、Ability框架以及UI框架,支持应用开发过程中多终端的业务逻辑和界面逻辑进行复用,能够实现应用的一次开发,多端部署,提升了跨设备应用的开发效率。

  • 采用业界主流设计方式,提供多种响应式布局方案,支持栅格化布局,满足不同屏幕的界面适配能力。

3. 统一OS,弹性部署

HarmonyOS通过组件化和小型化等设计方法,支持多种终端设备按需弹性部署,能够适配不同类别的硬件资源和功能需求。支撑通过编译链关系去自动生成组件化的依赖关系, 形成组件树依赖图,支撑产品系统的便捷开发,降低硬件设备的开发门槛。

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

四、HarmonyOS生态

HarmonyOS社区运营规划

20220111180951

HarmonyOS校园推广

教育部产学合作计划:武汉大学,华中科技大学,…

HarmonyOS创新训练营:上海交大,天津大学,…

华为ICT大赛:百校种子计划

华为千校万里行-HarmonyOS系列师资培训 …

学习推荐

HarmonyOS官网社区: https://www.harmonyos.com/cn/home/

HarmonyOS应用开发文档: https://developer.harmonyos.com/cn/home/

HarmonyOS设备开发文档: https://device.harmonyos.com/cn/home/

OpenHarmony开源地址: https://gitee.com/openharmony

华为人才在线: https://e.huawei.com/cn/talent/#

五、本章总结

本章讲述了HarmonyOS的相关概念,介绍了HarmonyOS的设计理念和技术架 构,了解了HarmonyOS全场景系统的关键特性,帮助大家认识全新的“面向未来”的HarmonyOS操作系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/637588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis远程连接不上解决办法

问题描述: redis远程服务端运行在192.168.3.90计算机上,客户端计算机(ip:192.168.3.110)通过redsi-cli.exe客户端工具连接时,没有反应,连接不上。 如图所示: 解决步骤: 步骤一&…

USB-C接口给显示器带来怎样的变化?

随着科技的不断发展,Type-C接口已经成为现代电子设备中常见的接口标准。它不仅可以提供高速的数据传输,还可以实现快速充电和视频传输等功能。因此,使用Type-C接口的显示器方案也受到了广泛的关注。本文将介绍Type-C接口显示器的优势、应用场…

如何进行正确的 CodeReview

软件开发生命周期中至关重要的一步是代码审查。它使开发人员能够显著提升代码质量。它类似于书籍的创作过程。首先,作者写故事,然后经过编辑以确保不会出现诸如混淆“you’re”和“yours”之类的错误。在这个语境中,代码审查指的是检查和评估…

Python项目——计算器(PySide6+Pyinstaller)

1、介绍 使用python编写一个计算器,可以实现基本的运算。【注】该项目最终还有一些细小的bug没有完善,例如符号可以一直输入。 2、实现 使用pyCharm创建一个新的项目。 2.1、设计UI 使用Qt designer设计一个UI界面,保存ui文件&#xff0…

直流过欠压继电器JSZD-1A DC220V 0-220V 面板嵌入式安装

一、 概述 JSZD-1系列直流电压继电器是专为直流系统设计的,以进口大规模集成电路为核心,配以本厂研制的模块和部分外围元件组装而成。具有通用性好、互换性强、寿命长、外形美观大方、性能稳定可靠等特点。 JSZD-1系列直流电压继电器既是一块过、欠压继…

Python 类变量和实例变量详解

更多资料获取 📚 个人网站:ipengtao.com 在Python中,变量分为类变量和实例变量两种类型,它们有着不同的作用范围和生命周期。理解这两种变量类型的区别对于面向对象编程非常重要。本文将详细介绍Python中的类变量和实例变量&…

CentOS7 LAMP环境安装部署Zabbix

CentOS7 LAMP环境安装部署Zabbix 查看CentOS版本号 more /etc/redhat-release server 最好配置静态IP地址、DNS,在DHCP服务器将此IP地址排除掉。 Hostname 改为zabbix 服务端:172.20.26.137 客户端:172.20.26.113 Zabbix服务端安装及配…

3.postman动态参数、文件上传及断言

一、postman内置动态参数以及自定义的动态参数 postman内置动态参数: {{$timestamp}} 生成当前时间的时间戳 {{$randomint}} 生成0-1000之间的随机数 {{$guid}} 生成随机guid字符串 自定义动态参数: 在请求中pre-req页面下 //手动的获得时间戳 var…

四个简单的bat脚本

Windows11 最大劝退点就是这个右键菜单,复制粘贴都变成一点点的小图标,最气人的是点击底部的显示更多选项才能展示全部功能。让许多本来点一次就能完成的操作变成两次。其实使用一个小命令就能修改回win10版本的菜单。四个简单的bat脚本,能完…

探索指针的奇妙世界,程序中的魔法箭头(上)

目录 一.指针是什么二.指针和指针类型1.指针加减整数2.指针的解引用 三.野指针1.野指针形成的原因(1)指针未初始化指针越界访问 2.如何规避野指针(1)指针初始化(2)小心指针越界(3)指…

第七回 林教头刺配沧州道 鲁智深大闹野猪林-FreeBSD/Linux图形界面安装配置

高俅定林冲:手持利刃,故入节堂,杀害本官的罪名,将林冲押解去开封府,暗示开封府将林冲处决。 开封府负责办案的叫孙定,他为人刚正不阿,宅心仁厚。在他的据理力争之下,开封府尹最终对…

【计算机网络】TCP握手与挥手:三步奏和四步曲

这里写目录标题 前言三次握手四次挥手三次握手和四次挥手的作用TCP三次握手的作用建立连接防止已失效的连接请求建立连接防止重复连接 TCP四次挥手的作用:安全关闭连接避免数据丢失避免半开连接 总结: 总结 前言 TCP(传输控制协议&#xff09…

终极解决Flutter项目运行ios项目报错Without CocoaPods, plugins will not work on iOS or macOS.

前言 最近在开发Flutter项目,运行ios环境的时候报错没有CocoaPods,安卓环境可以正常运行,当时一脸懵逼,网上搜索了一下,有给我讲原理的,还有让我安装这插件那插件的,最终把电脑搞得卡死&#x…

25计算机考研408专业课复习计划

点击蓝字,关注我们 今天要分享的是25计算机考研408专业课复习计划。 以下内容供大家参考,大家要根据自己的复习情况进行适当调整。 统考与自命题 统考科目是指计算机学科专业基础综合(408),满分150分,试…

鸿蒙开发环境配置-Windows

背景 入局鸿蒙开发,发现在 Windows 下面配置安装相关环境并没有像 Mac 一样简单,过程中遇到了一些问题记录一下。 Devceo Studio 下载安装 目前鸿蒙的 IDE 最新版是 4.0,通过这个连接可以下载,鸿蒙4.0下载连接。选择符合我们电…

【设计模式】责任连模式怎么用?

我将通过一个贴近现实的故事——请假审批流程,带你了解和掌握责任链模式。 什么是责任链模式? 责任链模式是一种行为设计模式,它让你可以避免将请求的发送者与接收者耦合在一起,让多个对象都有处理请求的机会将这个对象连成一条…

Qt拖拽事件简单实现

1.相关说明 重写resizeEvent(这个按需重写)、dragEnterEvent(拖拽事件函数)、dropEvent(放下事件函数)&#xff0c;可以将本地图片拖拽到label标签中 2.相关界面 3.相关代码 #include "widget.h" #include "ui_widget.h" #include <QDragEnterEvent>…

【cucumber】cluecumber-report-plugin生成测试报告

cluecumber为生成测试报告的第三方插件&#xff0c;可以生成html测报&#xff0c;该测报生成需以本地json测报的生成为基础。 所以需要在测试开始主文件标签CucumberOptions中&#xff0c;写入生成json报告。 2. pom xml文件中加入插件 <!-- 根据 cucumber json文件 美化测…

beego API 自动化文档

API 全局设置 必须设置在 routers/router.go 中&#xff0c;文件的注释&#xff0c;最顶部&#xff1a; // APIVersion 1.0.0 // Title mobile API // Description mobile has every tool to get any job done, so codename for the new mobile APIs. // Contact astaxiegmai…

Unity中ShaderGraph下获取主灯

文章目录 前言一、ShaderGraph获取主灯1、创建ShaderGraph2、创建一个自定义方法&#xff08;Custom Function&#xff09;节点3、新建两个 Vector3 类型的输出变量4、选择自定义节点程序体为 string 类型5、编写程序体6、我们输出主光方向看看效果7、我们输出主光颜色看看效果…