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_a 和 LiteOS。
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、手表应用市场、运动健康、云测、智能家居等。 |
- 注册开发者帐号
登录HarmonysOS应用开发门户,点击右上角注册按钮。如果您使用华为手机已有华为帐号,直接点击登录按钮,然后扫码登录即可。 - 实名认证
使用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中导入项目:
配置工程
- 点击底部工具栏中的“Board”按钮,选择开发板的配置模板,例如:Hi3516DV300:
选中后会自动创建bundle.json文件。
- 点击左侧菜单栏中的Configure按钮,设置“Default installation path”路径,用于存储hpm自动安装的工具链。
- 点击底部工具栏中的“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”之意为和谐,世界大同、和合共生,是中华文明一直秉持的理念。“鸿蒙”有盘古开天辟地之意,“鸿蒙初辟本无性,打破顽空须悟空”,鸿蒙生态刚刚起步,需要华为、国内外企业的共同努力,需要众多悟空的共同推动构建更加绚丽多彩的世界。华为的鸿蒙,中国的鸿蒙,必将成为世界的鸿蒙。