harmonyos开发-基础知识

后端 / 笔记 / 2021-10-24

HarmonyOS基础

harmonyos概述

HarmonyOS 是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体 娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS 提出了基 于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。

  • 对消费者而言,HarmonyOS 能够将生活场景中的各类终端进行能力整合,形成一个 “超级虚拟终端”,可以实现不同的终端设备之间的快速连接、能力互助、资源共 享,匹配合适的设备、提供流畅的全场景体验。
  • 对应用开发者而言,HarmonyOS 采用了多种分布式技术,使得应用程序的开发实现 与不同终端设备的形态差异无关,降低了开发难度和成本。这能够让开发者聚焦上层 业务逻辑,更加便捷、高效地开发应用。
  • 对设备开发者而言,HarmonyOS 采用了组件化的设计方案,可以根据设备的资源能 力和业务特征进行灵活裁剪,满足不同形态的终端设备对于操作系统的要求。

内核层

  • 内核子系统:HarmonyOS 采用多内核设计,支持针对不同资源受限设备选用适合的 OS 内核。内核抽象层(KAL,KernelAbstract Layer)通过屏蔽多内核差异,对上层提供基 础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。
  • 驱动子系统:HarmonyOS 驱动框架(HDF)是 HarmonyOS 硬件生态开放的基础,提供 统一外设访问能力和驱动开发、管理框架。

系统服务层

系统服务层是 HarmonyOS 的核心能力集合,通过框架层对应用程序提供服务。该层包含 以下几个部分

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

根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服 务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。

框架层

框架层为 HarmonyOS 的应用程序提供了 Java/C/C++/JS 等多语言的用户程序框架和 Ability 框架,以及各种软硬件服务对外开放的多语言框架 API;同时为采用 HarmonyOS 的设备提供了 C/C++/JS 等多语言的框架 API,不同设备支持的 API 与系统的组件化裁剪 程度相关。

应用层

应用层包括系统应用和第三方非系统应用。HarmonyOS 的应用由一个或多个 FA (Feature Ability)或 PA(Particle Ability)组成。其中,FA 有 UI 界面,提供与用户交 互的能力;而 PA 无 UI 界面,提供后台运行任务的能力以及统一的数据访问抽象。基于FA/PA 开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一 致、高效的应用体验

系统安全

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

  • 通过“分布式多端协同身份认证”来保证“正确的人”。
  • 通过“在分布式终端上构筑可信运行环境”来保证“正确的设备”。
  • 通过“分布式数据在跨终端流动的过程中,对数据进行分类分级管理”来保证“正确地使 用数据”。

正确的人

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

  • 零信任模型:HarmonyOS 基于零信任模型,实现对用户的认证和对数据的访问控制。当 用户需要跨设备访问数据资源或者发起高安全等级的业务操作(例如,对安防设备的操 作)时,HarmonyOS 会对用户进行身份认证,确保其身份的可靠性。
  • 多因素融合认证:HarmonyOS 通过用户身份管理,将不同设备上标识同一用户的认证凭 据关联起来,用于标识一个用户,来提高认证的准确度
  • 协同互助认证:HarmonyOS 通过将硬件和认证能力解耦(即信息采集和认证可以在不同 的设备上完成),来实现不同设备的资源池化以及能力的互助与共享,让高安全等级的设 备协助低安全等级的设备完成用户身份认证。

正确的设备

在分布式终端场景下,只有保证用户使用的设备是安全可靠的,才能保证用户数据在虚拟 终端上得到有效保护,避免用户隐私泄露。

  • 安全启动 确保源头每个虚拟设备运行的系统固件和应用程序是完整的、未经篡改的。通过安全启 动,各个设备厂商的镜像包就不易被非法替换为恶意程序,从而保护用户的数据和隐私安 全。
  • 可信执行环境 提供了基于硬件的可信执行环境(TEE,Trusted Execution Environment)来保护用户 的个人敏感数据的存储和处理,确保数据不泄露。由于分布式终端硬件的安全能力不同, 对于用户的敏感个人数据,需要使用高安全等级的设备进行存储和处理。HarmonyOS 使 用基于数学可证明的形式化开发和验证的 TEE 微内核,获得了商用 OS 内核 CC EAL5+的 认证评级。
  • 设备证书认证 支持为具备可信执行环境的设备预置设备证书,用于向其他虚拟终端证明自己的安全能 力。对于有 TEE 环境的设备,通过预置 PKI(Public Key Infrastructure)设备证书给设 备身份提供证明,确保设备是合法制造生产的。设备证书在产线进行预置,设备证书的私 钥写入并安全保存在设备的 TEE 环境中,且只在 TEE 内进行使用。在必须传输用户的敏感数据(例如密钥、加密的生物特征等信息)时,会在使用设备证书进行安全环境验证后, 建立从一个设备的 TEE 到另一设备的 TEE 之间的安全通道,实现安全传输。

正确地使用数据

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

  • 数据生成:根据数据所在的国家或组织的法律法规与标准规范,对数据进行分类分级,并 且根据分类设置相应的保护等级。每个保护等级的数据从生成开始,在其存储、使用、传 输的整个生命周期都需要根据对应的安全策略提供不同强度的安全防护。虚拟超级终端的访问控制系统支持依据标签的访问控制策略,保证数据只能在可以提供足够安全防护的虚 拟终端之间存储、使用和传输
  • 数据存储:HarmonyOS 通过区分数据的安全等级,存储到不同安全防护能力的分区,对 数据进行安全保护,并提供密钥全生命周期的跨设备无缝流动和跨设备密钥访问控制能 力,支撑分布式身份认证协同、分布式数据共享等业务。
  • 数据使用:HarmonyOS 通过硬件为设备提供可信执行环境。用户的个人敏感数据仅在分 布式虚拟终端的可信执行环境中进行使用,确保用户数据的安全和隐私不泄露。
  • 数据传输:为了保证数据在虚拟超级终端之间安全流转,需要各设备是正确可信的,建立 了信任关系(多个设备通过华为帐号建立配对关系),并能够在验证信任关系后,建立安 全的连接通道,按照数据流动的规则,安全地传输数据。当设备之间进行通信时,需要基 于设备的身份凭据对设备进行身份认证,并在此基础上,建立安全的加密传输通道。
  • 数据销毁:销毁密钥即销毁数据。数据在虚拟终端的存储,都建立在密钥的基础上。当销 毁数据时,只需要销毁对应的密钥即完成了数据的销毁

应用包结构

HarmonnyOS用户程序包,以 APPApplication Package形式发布,他由多个HAPHarmonyOS Ability Package以及描述每个HAP属性pack.info组成。HAP是Ability的部署包,harmonyos应用代码围绕Ability组件展开。

一个HAP是由,代码,资源,第三方库以及应用配置文件组成的模块包,分为entryfeature两种模块类型。

  • entry 应用的主模块。一个APP中对于同一设备类型必须有且只有一个entry类型的HAP,可独立安装运行。
  • feature: 应用的动态特性模块。一个APP可以包含一个或多个feature类型HAP,也可以不含。只有包含Ability的HAP才能够独立运行。

开发基础知识

应用基础知识

APP

HarmonyOS 的应用软件包以 APP Pack(Application Package)形式发布,它是由一 个或多个 HAP(HarmonyOS Ability Package)以及描述每个 HAP 属性的 pack.info 组 成。HAP 是 Ability 的部署包,HarmonyOS 应用代码围绕 Ability 组件展开。 一个 HAP 是由代码、资源、第三方库及应用配置文件组成的模块包,可分为 entryfeature 两种模块类型

  • entry:应用的主模块。一个 APP 中,对于同一设备类型必须有且只有一个 entry 类型的 HAP,可独立安装运行。
  • feature:应用的动态特性模块。一个 APP 可以包含一个或多个 feature 类型的 HAP,也 可以不含。只有包含 Ability 的 HAP 才能够独立运行。

Ability

Ability 是应用所具备的能力的抽象,一个应用可以包含一个或多个 Ability。Ability 分为 两种类型:FA(Feature Ability)和 PA(Particle Ability)。FA/PA 是应用的基本组成 单元,能够实现特定的业务功能。FA 有 UI 界面,而 PA 无 UI 界面。

库文件

库文件是应用依赖的第三方代码形式,存放在 libs 目录,是.so 文件。

资源文件

应用的资源文件(字符串、图片、音频等)存放于 resources 目录下,便于开发者使用和 维护

配置文件

配置文件 (config.json) 是应用的 Ability 信息,用于声明应用的 Ability,以及应用所需 权限等信息

pack.info

描述应用软件包中每个 HAP 的属性,由 IDE 编译生成,应用市场根据该文件进行拆包和 HAP 的分类存储。HAP 的具体属性包括:

  • delivery-with-install: 用于标识该 HAP 是否需要在主动安装时进行安
  • name:HAP 文件名。
  • module-type:模块类型,entry 或 feature。
  • device-type:用于标识支持该 HAP 运行的设备类型。

应用配置文件

简介

应用的每个 HAP 的根目录下都存在一个“config.json”配置文件,主要涵盖以下三个方 面:

  • 应用的全局配置信息包含应用的包名、生产厂商、版本号等基本信息。
  • 应用在具体设备上的配置信息
  • HAP 包的配置信息,包含每个 Ability 必须定义的基本属性(如包名、类名、类型以及 Ability 提供的能力),以及应用访问系统或其他应用受保护部分所需的权限等

文件约定

配置文件“config.json”采用 JSON 文件格式,由属性和值两部分构成

  • key
  • value

配置文件内部结构

应用的配置文件“config.json”中由“app”、“deviceConfig”和“module”三个部 分组成,缺一不可

  • app 表示应用的全局配置信息。同一个应用的不同 HAP 包的“app”配置 必须保持一致。
  • deviceConfig表示应用在具体设备上的配置信息。
  • Module表示 HAP 包的配置信息。该标签下的配置只对当前 HAP 包生效。

config.json配置文件

每个hap包下都包含了该hap包的配置信息,这个配置位于 entry/src/main目录下,由工具自动生成,命名为config.json

  • app 应用的全局配置信息,同一个不同的HAP包的app的包配置必须保持一致
  • deviceConfig 表示应用在具体设备上的配置信息
  • module 表示HAP包的配置信息。
  • bundleName 应用的包名
  • vendor 表示应用开发商
  • version
    • code 内部版本号
    • name 应用版本号
  • apiVersion
    • compatible 表示运行该应用需要的最小API版本
    • target应用运行需要API目标版本
    • releaseType 表示应用运行需要的API目标类型
  • Canary受限发布的版本
  • Beta发布公开的Beata版本
  • Release公开发布的正式版