华为鸿蒙HarmonyOS开放源代码地址正式公布了,鸿蒙项目的开源名称为OpenHarmony,地址是https://openharmony.gitee.com,它属于开放原子开源基金会旗下开源项目,以下将做介绍。
前言 华为OpenHarmony捐献给开放原子开源基金会(OpenAtom Foundation)。开放原子开源基金会是中国首个,也是目前唯一一个以开源为主题的基金会,目前孵化项目包括百度超级链XuperChain与OpenHarmony。 代码仓库地址:https://openharmony.gitee.com
项目介绍 OpenHarmony是开放原子开源基金会(OpenAtom Foundation)旗下开源项目,定位是一款面向全场景的开源分布式操作系统。 OpenHarmony在传统的单设备系统能力的基础上,创造性地提出了基于同一套系统能力、适配多种终端形态的理念,支持多种终端设备上运行,第一个版本支持128K-128M设备上运行,欢迎参加开源社区一起持续演进。 针对设备开发者,OpenHarmony采用了组件化的设计方案,可以根据设备的资源能力和业务特征进行灵活裁剪,满足不同形态的终端设备对于操作系统的要求。可运行在百K级别的资源受限设备和穿戴类设备,也可运行在百M级别的智能家用摄像头/行车记录仪等相对资源丰富的设备。
详细特征 1、JS应用开发框架 作为JS应用开发框架的轻量实现,提供一套跨平台的类web应用开发框架,通过Toolkit将开发者编写的HML、CSS和JS 文件编译打包成JS Bundle,然后再将JS Bundle解析运行成C++ UIKit的View 组件进行渲染。通过支持三方开发者使用声明式的API进行应用开发,以数据驱动视图变化,避免了大量的视图操作,大大降低了应用开发难度,提升开发者开发体验。 2、DFX 针对不同硬件架构和资源提供组件化且可定制的DFX框架。根据RISC-V、Cortex-M、Cortex-A不同硬件平台,提供两种不同的轻量级DFX框架。 3、XTS认证 XTS是OpenHarmony生态认证测试套件的集合,当前包括acts(application compatibility test suite)应用兼容性测试套,后续会拓展dcts(device compatibility test suite)设备兼容性测试套等。 4、全球化 全球化资源管理子系统主要提供语言资源回溯和多偏好语言支持的能力,包括多语言资源回溯和多偏好语言支持。 5、公共基础 公共基础库存放OpenHarmony通用的基础组件。这些基础组件可被OpenHarmony各业务子系统及上层应用所使用。 6、内核 OpenHarmony内核是面向IoT领域的实时操作系统内核,它具备类似RTOS般轻快和Linux般易用的特点。包括功能组件部分:进程和线程调度、内存管理、IPC机制、timer管理等操作系统基础组件。 7、分布式任务调度 分布式任务调度模块,通过主(手机设备)从设备(运动手表等小内存设备)服务代理机制,在异构操作系统上建立起分布式服务平台,支持OpenHarmony手机与拉起其它OpenHarmony设备FA的能力。 8、分布式通信 实现近场设备间统一的分布式通信能力管理,提供不区分链路的设备发现和传输接口。包含服务发布、数据传输、安全等功能。 9、启动恢复 启动恢复负责在内核启动之后,应用启动之前的操作系统中间层的启动。支持使用LiteOS-A内核的平台,当前包括:Hi3516DV300平台和Hi3518EV300平台。 10、图形 主要包括UI组件、布局、动画、字体、输入事件、窗口管理、渲染绘制等模块,构建基于轻量OS的应用框架,满足硬件资源较小的物联网设备的OpenHarmony系统应用开发。 11、媒体 为多媒体应用开发者开发者提供统一的开发接口,使得开发者可以专注于应用业务的开发,轻松使用多媒体的资源。 12、安全 主要提供样例给开发者展示如何去使用已有的安全机制来提升系统的安全能力,包括安全启动、应用权限管理、IPC通信鉴权、HUKS、HiChain、应用签名验签。 13、测试 开发过程采用测试驱动开发模式,开发者基于系统新增特性可以通过开发者自己开发用例保证,对于系统已有特性的修改,也可通过修改项目中原有自测试用例保证,旨在帮助开发者在开发阶段就能开发出高质量代码。 14、用户程序框架 包含两个模块:元能力子系统和包管理子系统。元能力子系统,是OpenHarmony为开发者提供的一套开发OpenHarmony应用的开发框架。包管理子系统,是OpenHarmony为开发者提供的安装包管理框架。 15、系统服务框架 由于平台资源有限,且硬件平台多样,因此需要屏蔽不同硬件架构和资源的不同、以及运行形态的不同,提供统一化的系统服务开发框架。根据RISC-V、Cortex-M、Cortex-A不同硬件平台,分为两种平硬件平台,简称M核、A核。 16、编译构建 编译构建提供了一个在GN与ninja基础上的编译构建框架。支持以下功能:1.构建不同芯片平台的产品。如:Hi3518EV300平台的ipcamera产品,Hi3516DV300平台的ipcamera产品,Hi3861平台的wifi模组产品。2.构建HPM包管理配置生成的自定义产品。 17、驱动 OpenHarmony驱动子系统采用采用C面向对象编程模型构建,通过平台解耦、内核解耦,兼容不同内核,提供了归一化的驱动平台底座,旨在为开发者提供更精准、更高效的开发环境,力求做到一次开发,多系统部署。
从代码仓库获取源码 1、适用场景 基于OpenHarmony的稳定分支建立自己的基线,分发下游客户。 已经完成自身软件与OpenHarmony的对接,需要进行OpenHarmony官方认证。 芯片/模组/app通过OpenHarmony官方认证后,贡献代码到OpenHarmony生态。 修复OpenHarmony的问题。 学习OpenHarmony的源码。 2、准备 注册码云gitee账号。 注册码云SSH公钥,请参考码云帮助中心的公钥管理:https://gitee.com/help/articles/4181 安装git客户端并配置用户信息。 git config --global user.name "yourname" git config --global user.email "your-email-address" git config --global credential.helper store 安装码云repo工具,可以执行如下命令: curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo chmod a+x /usr/local/bin/repo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests 3、操作 方式一(推荐):通过repo下载 repo init -u https://gitee.com/openharmony/manifest.git -b master repo sync -c 方式二:通过git clone单个代码仓库 进入代码仓库主页:https://gitee.com/openharmony,选择需要克隆的代码仓库,执行命令,如: git clone https://gitee.com/openharmony/manifest.git -b master 注:其它的获取方式还有如下 1]、从镜像站点下载压缩文件(推荐)。 2]、从hpm网站组件式获取,通过HPM,查找满足需求的解决方案,挑选/裁剪组件后下载。 3]、用包管理器命令行工具获取,通过HPM的hpm-cli命令行工具,执行命令下载,以下附上方法。
附1:用包管理器命令行获取源码 1、适用场景 用户已通过组件式获取的方式获取源码,需要对源码中的某个或某几个组件进行独立升级。 用户已经比较熟悉OpenHarmony系统的开发并且熟练掌握命令行工具的使用。 2、准备 通过命令行获取,需要先安装Node.js和hpm命令行工具,安装步骤如下: 安装Node.js。 官网下载并在本地安装Node.js. 推荐安装Node.js 12.x(包含npm 6.14.4)或更高版本 (推荐12.13.0+),参考在CentOS 7、Fedora 31/30/29中安装Node.js 12 LTS版本的方法。 通过Node.js自带的npm安装hpm命令行工具。 打开CMD,执行以下命令: npm install -g @ohos/hpm-cli 安装完成后执行如下命令,显示hpm版本,即安装成功。 hpm -V 或 hpm --version 如果升级hpm的版本,请执行如下命令: npm update -g @ohos/hpm-cli 3、操作 接下来将组件添加到开发项目中,假定要获取的组件名为@ohos/demo,具体操作如下: 进入开发目录,执行如下命令,采用默认模板创建一个开发项目: hpm init -t default 执行如下命令,安装组件@ohos/demo: hpm install @ohos/demo 工具会自动从服务器下载所有依赖的组件,下载成功则显示Install successfully! $ hpm install @ohos/demo Requesting: https://url.foo.bar/hpm/registry/api/bundles/@ohos/demo downloading @ohos/demo ... Install successfully!
附2:源码目录简介 applications:应用程序样例,包括wifi-iot,camera等。 base:基础软件服务子系统集&硬件服务子系统集。 build:组件化编译、构建和配置脚本。 domains:增强软件服务子系统集。 drivers:驱动子系统。 foundation:系统基础能力子系统集。 kernel:内核子系统。 prebuilts:编译器及工具链子系统。 test:测试子系统。 third_party:开源第三方组件。 utils:常用的工具集。 vendor:厂商提供的软件。 build.py:编译脚本文件。
相关主题 |