中国的鸿蒙,世界的鸿蒙

2020年9月10日18时18分,华为鸿蒙HarmonyOS 2.0开放源代码,代码捐赠给开放原子开源基金会进行开源孵化,鸿蒙 OS 2.0 正式登场。

OpenHarmony
开源项目:https://www.openatom.org/openharmony
代码仓库:https://openharmony.gitee.com

当前发布的第一个版本支持大屏、手表、车机等128KB-128MB终端设备,今年 12 月将发布手机版本的 SDK、工具、文档和模拟器;2021年4月将支持128MB-4GB 终端设备;2021 年 10 月将支持4GB 以上所有设备。2021年华为智能手机将全面升级支持鸿蒙 2.0。
中国的鸿蒙,世界的鸿蒙
据悉,10月22日20点华为将发布Mate 40系列手机,将搭载EMUI11和鸿蒙系统测试版,敬请期待。

HarmonyOS是面向未来、面向全场景的分布式操作系统。HarmonyOS不仅支持手机,也支持平板、车机、智慧屏、PC、手表、音箱、耳机、眼镜及其他更多的终端设备(华为1+8+N战略)按需弹性部署,支持一次开发、多端部署。HarmonyOS以人为核心,以手机为中枢,造就新硬件、新交互、新服务,将打开焕然一新的全场景世界。

HarmonyOS与LiteOS

LiteOS

LiteOS是华为面向IoT领域的轻量级物联网操作系统,遵循BSD-3开源许可协议,具备轻量级(最小内核尺寸仅为6KB)、低功耗、互联互通、组件丰富、快速开发等能力,可广泛应用于智能家居、个人穿戴、车联网、城市公共服务、制造业等领域,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期。LiteOS始于2012年,是为支持华为终端产品而开发的嵌入式操作系统,后在华为Mate系列、P系列、荣耀系列手机、可穿戴产品上批量应用,在2015 年 5 月 20 日的华为HNC网络大会上正式发布。2016年9月发布Huawei LiteOS开源版本,2018年5月发布V2.1版本、LiteOS SDK,2018年9月发布LiteOS IDE开发工具LiteOS Studio V1.0。
中国的鸿蒙,世界的鸿蒙

HarmonyOS内核

HarmonyOS整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。
中国的鸿蒙,世界的鸿蒙
HarmonyOS采用多内核设计,支持针对不同资源受限设备选用不同的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供基础的内核能力,包括进程/线程管理、内存管理、文件系统、网络管理和外设管理等。

当前OpenHarmony提供两款内核 liteos-a 和 liteos-m,同时具备RTOS轻快和Linux易用的特点。其中liteos_a主要针对Cortex-A系列处理器,适用于资源较丰富的嵌入式设备;liteos_m主要针对Cortex-M系列处理器,适用于MCU等各种资源极小的设备。12 月将支持 Linux Kernel 内核,兼容更多设备。

HarmonyOS融合了LiteOS,不是建立在PPT上的,有着华为多年的技术沉淀。HarmonyOS 1.0已应用于荣耀智慧屏、EMUI 10.0,实现了多屏协同、HiCar、设备畅连等应用。即将发布的EMUI 11借用了HarmonyOS 2.0的技术,将带来更便利、更丰富的体验。感兴趣的同学可以对比一下两者的代码:kernel_liteos_aLiteOS

HarmonyOS和Fuchsia OS

谷歌Fuchsia OS是与HarmonyOS对等的操作系统。Fuchsia 于 2016 年 8 月首次出现在 Github 上,与Android和Chrome OS两款系统不同,Fuchsia不是基于 Linux 内核,而是基于谷歌全新开发的Zircon微内核。Fuchsia主要使用C/C++、Dart语言开发,大部分用户界面使用Flutter构建。

HarmonyOS和Fuchsia OS都是新一代的智能操作系统,Android和iOS必将没落。HarmonyOS的首要目标是替代Android,但不仅仅是为了替代 Android,而是面向未来、全场景、多设备的操作系统,将开启一个万物互联的新时代,这才是决胜的关键。经过15 年的积累,Android占据全球近 87% 智能手机市场份额,鸿蒙须有明显的优势才能取代之。

华为致力于构建软硬件双轮驱动的全场景智慧生态。与竞争对手相比,华为自身拥有软硬件应用生态,拥有7亿+ 终端用户,华为手表、腕上可穿戴设备全球市场份额第一,手表全球第二,平板全球第三,这可以保证HarmonyOS能够得到广泛的应用。华为应用市场AppGallery在190多个国家和地区实现应用分发,全球月度活跃用户超4亿。同时华为将核心技术、软硬件能力全面开放给开发者和生态伙伴,构筑开放生态。鸿蒙将是全球首个可商用的全场景分布式操作系统。
中国的鸿蒙,世界的鸿蒙

OpenHarmony源码

获取源码

OpenHarmony代码以组件的形式开放,目前包含17个子系统、134个代码仓库、3个参考实现。因此,您要了解整体代码结构,推荐从镜像站点下载OpenHarmony全量代码。为了其他需求,您还可以通过以下方式获取:

  • hpm网站查找满足需求的解决方案,挑选/裁剪组件后下载。
  • 使用HPM的hpm-cli命令行工具获取。
  • 通过repo或git工具从代码仓库获取。

具体方法请参见获取OpenHarmony源码的下载说明

目前,鸿蒙OS版本是2.0,OpenHarmony的版本为1.0,不知以后是否仍保持这种对应关系。

源码目录

OpenHarmony全量代码的目录结构
目录名 描述
applications 应用程序样例,包括wifi-iot,camera等
base 基础软件服务子系统&硬件服务子系统集
build 组件化编译、构建和配置脚本
domains 增强软件服务子系统集
drivers 驱动子系统
foundation 系统基础能力子系统集
kernel 内核子系统
prebuilts 编译器及工具链子系统
test 测试子系统
third_party 开源第三方组件
utils 常用工具
vendor 厂商提供的软件
build.py 编译脚本文件

代码仓库中项目命名的格式为:[目录名] + [子目录名],比如两个LiteOS内核的项目名称分别为kernel_liteos_a、kernel_liteos_m,第三方轻量级JavaScript引擎JerryScript的项目名称为third_party_jerryscript。其中base、domains、foundation、test(部分)下的项目名称省略了顶层目录,比如base下的项目startup_frameworks_syspara_lite、startup_hals_syspara_lite。有的项目命名不规范,比如foundation下的JS应用开发框架命名为ace_lite_jsfwk,对应路径是ace/frameworks/lite,希望华为能统一命名方式。

主要子系统
系统 简介 目录
JS应用开发框架 JS应用开发框架的轻量实现、跨平台的类web应用开发框架,通过Toolkit将开发者编写的HTML、CSS和JS 文件编译打包成JS Bundle,然后再将JS Bundle解析成C++ UIKit的View 组件进行渲染。支持声明式应用开发,以数据驱动视图更新。 /foundation/ace
DFX 主要包含DFR(Design for Reliability,可靠性)和DFT(Design for Testability,可测试性)特性。针对不同硬件架构和资源提供组件化且可定制的DFX框架。根据RISC-V、Cortex-M、Cortex-A不同硬件平台,提供两种不同的轻量级DFX框架 /base/hiviewdfx
XTS认证 认证测试套件集合 /test/xts
全球化 主要提供多语言资源回溯和多偏好语言支持 /base/global
公共基础 通用的基础组件库 /utils/native/lite、/base/iot_hardware、 vendor/hisi/hi3861/hi3861_adapter/hals/iot_hardware
内核 OpenHarmony内核,当前包含liteos_a和liteos_m /kernel、/drivers/liteos
分布式任务调度 管理跨设备组件,提供访问和控制远程组件的能力,支持分布式场景下的应用协同 /foundation/distributedschedule
分布式通信 实现近场设备间统一的分布式通信能力管理,提供不区分链路的设备发现和传输接口。包含服务发布、数据传输、安全等功能 /foundation/communication
启动恢复 负责在内核启动之后、应用启动之前的操作系统中间层的启动。支持使用LiteOS-A内核的平台 /base/startup
图形 主要包括UI组件、布局、动画、字体、输入事件、窗口管理、渲染绘制等模块,满足硬件资源较小的物联网设备的应用开发 /foundation/graphic/lite
媒体 提供多媒体应用开发接口,包括audio、camera、player、recorder等 /foundation/multimedia
安全 包括安全OS、秘钥管理和证书管理、加解密、签名验签、设备认证、应用权限管理等 /base/security
测试 开发测试框架 /test/developertest、/test/xdevice
用户程序框架 包含Ability子系统和包管理子系统 /foundation/aafwk、/foundation/appexecfwk
系统服务框架 屏蔽不同硬件架构和资源,提供统一的系统服务开发框架 /foundation/distributedschedule/interfaces/kits/samgr_lite、/foundation/distributedschedule/services/samgr_lite
编译构建 提供了在GN与ninja基础上的编译构建框架,支持构建不同芯片平台的产品、构建HPM包管理配置生成的自定义产品 /build/lite
驱动 提供弹性的框架、规范的驱动接口、组件化的驱动模型、统一的配置界面 /drivers/hdf

HarmonyOS开发

HarmonyOS采用C/C++、JS语言开发,应用开发支持Java、C/C++、JS等语言,设备开发支持C/C++、JS等语言。应用开发也称为北向开发,设备开发也称为南向开发。为什么这么称呼呢?想想地图方位,上北下南。

应用开发

华为开发者帐号
华为开发者帐号分为两种类型:个人开发者和企业开发者。

开发者类型 享受的服务/权益
个人开发者 应用市场、主题、商品管理、帐号、PUSH、新游预约、互动评论、社交、HUAWEI HiAI、手表应用市场等。
企业开发者 应用市场、主题、首发、支付、游戏礼包、应用市场推广、商品管理、游戏、帐号、PUSH、新游预约、互动评论、社交、HUAWEI HiAI、手表应用市场、运动健康、云测、智能家居等。
  1. 注册开发者帐号
    登录HarmonysOS应用开发门户,点击右上角注册按钮。如果您使用华为手机已有华为帐号,直接点击登录按钮,然后扫码登录即可。
  2. 实名认证
    使用DevEco Studio远程模拟器需要华为帐号进行实名认证。登录后点击头像->帐号设置->实名认证,个人开发者支持个人银行卡认证和身份证人工审核认证两种方式,推荐使用银行卡认证。

开发工具HUAWEI DevEco Studio
DevEco Studio基于IntelliJ IDEA Community开源版本打造,是面向华为终端全场景多设备的一站式集成开发环境。DevEco Studio支持Java、C/C++ 、JavaScript等多种语言,支持 FA(Feature Ability)和 PA(Particle Ability)快速开发,支持分布式多端开发、分布式多端调测、多端模拟仿真。DevEco Studio当前仅支持Windows10 64 位操作系统,即将支持macOS。

另外,若使用JS语言开发HarmonyOS应用需要安装Node.js,建议安装LTS版本。为提升npm安装速度,建议执行如下命令设置npm仓库地址:

npm config set registry https://mirrors.huaweicloud.com/repository/npm/

HarmonyOS SDK
HarmonyOS提供C/C++、JS、Java SDK包,Devco Studio提供SDK Manager统一管理SDK及工具链,下载SDK包时会自动下载其依赖的工具链。

点击菜单File > Settings,打开Settings配置界面,进入Appearance&Behavior > System Settings > HarmonyOS SDK,配置SDK和工具链。
中国的鸿蒙,世界的鸿蒙

SDK:

  • Native:C/C++语言SDK包,默认不自动下载,需手动勾选。
  • JS:JS语言SDK包,默认不自动下载,需手动勾选。
  • Java:Java语言SDK包,默认自动下载。

SDK工具链(SDK Tools):

  • Toolchains:应用开发必备工具集,包括编译、打包、签名、数据库管理等工具,首次下载SDK时默认下载。
  • Previewer:Lite Wearable预览器,在开发过程中可以动态预览Lite Wearable应用的界面,需手动勾选下载。

仿真模拟器
DevEco Studio提供远程模拟器(Remote Emulator)功能,可以在模拟器上运行TV、Wearable应用(Lite Wearable暂不支持在模拟器中运行,可以选择预览器运行和调试应用)。模拟器每次使用时长为1小时,到期后会自动释放资源。

在DevEco Studio菜单栏,点击Tools > HVD Manager,打开模拟器管理界面。首次使用模拟器,需下载相关资源。在浏览器弹出的华为帐号登录界面,输入已实名认证的华为帐号,登录授权后即可进入HVD Manager:
中国的鸿蒙,世界的鸿蒙
在设备列表中,选择设备,点击中国的鸿蒙,世界的鸿蒙按钮,运行模拟器。

HarmonyOS APP
DevEco Studio当前支持智慧屏、智能穿戴和轻量级智能穿戴三种设备的应用开发,可以根据工程向导创建各类设备的工程,并自动生成对应的代码和资源模板。
中国的鸿蒙,世界的鸿蒙

HarmonyOS应用发布形态为APP Pack(Application Package),它由一个或多个HAP(HarmonyOS Ability Package)包以及描述APP Pack属性的pack.info文件组成。
中国的鸿蒙,世界的鸿蒙

一个HAP在工程目录中对应一个Module,它由代码、资源、第三方库及应用清单文件组成,可以分为Entry和Feature两种类型。

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

Ability分为两种类型:FA(Feature Ability)和PA(Particle Ability)。其中,FA有UI界面,提供与用户交互的能力;PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。FA/PA是应用的基本组成单元,能够实现特定的业务功能,支持跨设备调度与分发。

了解了基础知识来运行一个Hello World吧。

设备开发

开发工具 HUAWEI DevEco Device Tool
DevEco Device Tool是HarmonyOS面向智能设备开发者提供的Visual Studio Code插件,支持按需定制组件,支持代码编辑、烧录和调试等功能,支持C/C++语言,支持ARM架构的Hi3516/Hi3518系列和RISC-V架构的Hi3861系列开发板。

安装DevEco Device Tool插件前需先安装JDK 1.8、Node.js(请选择LTS版本)和hpm。

注意,安装Node.js后需配置NODE_PATH环境变量,值为:C:\Users{userName}\AppData\Roaming\npm\node_modules。

执行如下命令安装hpm:

npm install -g @ohos/hpm-cli

下载DevEco Device Tool安装包解压后,打开VS Code,点击Extensions -> Install from VSIX...,从本地磁盘安装DevEco Device Tool插件。
中国的鸿蒙,世界的鸿蒙
安装成功后,界面如下图所示:
中国的鸿蒙,世界的鸿蒙

HarmonysOS设备开发采用C/C++语言,还需为VS Code安装C/C++语言的插件。在VS Code的插件市场,输入“C/C++”,然后点击“Install”即可在线安装。

工具链
执行如下命令安装烧录依赖工具:

npm install -g tftp
npm install -g serialport
npm install -g @serialport/parser-readline

ARM系列开发板使用串口烧录时需安装Zadig工具。RISC-V系列开发板(Hi3861系列)支持使用Jlink和HiBurn工具两种烧录方式。其中使用Jlink工具烧录,开发者需自行下载安装Jlink工具;使用HiBrun工具烧录,DevEco Device Tool已预置HiBrun工具。

ARM系列(Hi3516和Hi3518)开发板使用GDB和LLDB两种调试方式,在启动代码调试前需安装调试工具:

调试类型 工具名称 获取说明
GDB OpenOCD 自动通过hpm进行安装
GDB gcc-arm-none-eabi 下载地址:https://www.gnu.org/software/gdb/download/ ,9.1及以上版本
LLDB llvm 从HarmonyOS源码包中获取

说明,经测试目前OpenOCD不能自动安装。

RSIC-V系列Hi3861开发板使用Jlink方式进行调试,需安装以下工具:

工具名称 获取说明
JlinkGDBServer 安装Jlink工具包时自动安装
hcc_riscv32 执行npm install -g @ohos/gcc_riscv32命令进行安装

导入工程
HarmonyOS暂不支持Windows系统源码,只能在Linux系统中进行编译,需将Linux下的工程目录映射到Windows下,然后使用DevEco Device Tool打开,并在Windows环境下进行烧录和调试。

映射配置好后,在Visual Studio Code中导入项目:
中国的鸿蒙,世界的鸿蒙

配置工程

  1. 点击底部工具栏中的“Board”按钮,选择开发板的配置模板,例如:Hi3516DV300:

中国的鸿蒙,世界的鸿蒙

选中后会自动创建bundle.json文件。

  1. 点击左侧菜单栏中的Configure按钮,设置“Default installation path”路径,用于存储hpm自动安装的工具链。

中国的鸿蒙,世界的鸿蒙

  1. 点击底部工具栏中的“Dependent tools incorrectly installed”按钮,检查工程依赖的工具是否设置正确。
    • 如果“Auto-install”为“Yes”的工具未安装,DevEco Device Tool会自动从hpm上下载
    • 如果“Auto-install”为“No”的工具未安装,右下角会弹出提示框,需要开发者手动在Build、Burn和Debug中进行设置。
Tool Auto-install Installed
harmonyeabi Yes No
mtd-utils-tool Yes No
mingw Yes No
python No No
openocd Yes No
gcc-arm-none-eabi Yes No

说明:经测试,上述工具hpm中均未提供。当前版本不支持Windows环境下的源码编译,即使下载失败也无需关注。

有关设备开发的更多资料请查看HarmonyOS官网。

“Harmony”之意为和谐,世界大同、和合共生,是中华文明一直秉持的理念。“鸿蒙”有盘古开天辟地之意,“鸿蒙初辟本无性,打破顽空须悟空”,鸿蒙生态刚刚起步,需要华为、国内外企业的共同努力,需要众多悟空的共同推动构建更加绚丽多彩的世界。华为的鸿蒙,中国的鸿蒙,必将成为世界的鸿蒙。

中国的鸿蒙,世界的鸿蒙

参考资料

鸿蒙HarmonyOS官网
开放原子开源基金会 - OpenHarmony项目

猜你喜欢

转载自blog.51cto.com/7308310/2541796