【鸿蒙实战开发】OpenHarmony构建编译实战

环境

  • OpenHarmony-4.0 源码
  • 九联 unionpi_whale 开发板

一、OpenHarmony源码的模块划分

1、OpenHarmony内核分类

系统分为三种不同体量的系统,本文主要讲解基于Linux的标准系统构建。
image.png

2、系统代码版本

Openharmony有主干代码与发行版代码两种,代码的获取请参考官方文档
image.png

image.png

3、OpenHarmony源码体系

OpenHarmony的源码架构基于模块化设计,为了方便系统的功能的增加和裁剪,设计了基于GN构建的模块系统。整个模块可从大到小划分为产品(product)、领域/子系统集(domain)、子系统(sub_system)、部件(component)、模块/组件(module)、特性(feature)几个部分,这种模块化的树状编译框架,非常方便根据目标产品硬件资源的大小进行灵活的裁剪,从而实现**“统一0S,弹性部署”**的目标。

4、各部分的关系

​一个产品(product)可以包含1-n个子系统(subsystem),一个子系统可以包含1-~n个部件(component),一个部件可以包含1-n个模块(modue),不同产品的中的相同部件可以编译不同的特性(feature),**子系统集(domain)**在源代码一级根目录有体现。

​不同产品相同模块可以通过特性feature进行差异化定义。

image.png

5、南向开发的概念

​开源鸿蒙系统的南向开发,主要是针对设备或者终端的软件开发,例如各种智能家居设备、穿戴设备等。由于这些设备种类繁多,硬件配置和操作系统都各不相同,因此需要进行适配和优化,以确保设备能够顺利地运行开源鸿蒙系统。


二、OpenHarmony源码的产品、子系统、部件、组件配置详解

1、产品

​产品解决方案为基于开发板的完整产品,主要包含产品对OS的适配、部件拼装配置、启动配置和文件系统配置等。产品解决方案的源码路径规则为:vendor/{产品解决方案厂商}/{产品名称}

vendor/company/product/config.json config.json为编译构建的主入口,包含了开发板、OS部件和内核等配置信息。

2、领域

​OpenHarmony技术架构中有四大子系统集:“系统基本能力子系统集”、“基础软件服务子系统集"、“增强软件服务子系统集"、“硬件服务子系统集”。四大子系统不会直接出现在编译选项或者参数中,而是有对应的一级源代码文件夹:“系统基本能力子系统集”对应源码foundation文件夹;“基础软件服务子系统集”和“硬件服务子系统集”对应源码base文件夹;“增强软件服务子系统集"对应源码domains文件夹。

image.png

  • vendor仓:存放厂商驱动代码,配置文件
  • device仓:存放硬件设备代码,板级配置和驱动代码
3、子系统

子系统是一个逻辑概念,它具体由对应的组件构成。配置规则如下:

{
  "arkui": {
    "path": "foundation/arkui",      # 路径
    "name": "arkui"                  # 子系统名
  },
  "ai": {
    "path": "foundation/ai",
    "name": "ai"
  },
  "account": {
    "path": "base/account",
    "name": "account"
  },
  "distributeddatamgr": {
    "path": "foundation/distributeddatamgr",
    "name": "distributeddatamgr"
  },
  "security": {
    "path": "base/security",
    "name": "security"
  },
  ...
}

​ 子系统的配置规则主要是在build/subsystem_config.json中指定子系统的路径和子系统名称。

4、部件(组件)

​对子系统的进一步拆分,可复用的软件单元,它包含源码、配置文件、资源文件和编译脚本;能独立构建,以二进制方式集成,具备独立验证能力的二进制单元。

部件的bundle.json放在部件源码的根目录下。配置规则如下:

{
    "name": "@ohos/sensor_lite",	 # HPM部件英文名称,格式"@组织/部件名称"
    "description": "Sensor services",	# 部件功能一句话描述	
    "version": "3.1",		# 版本号,版本号与OpenHarmony版本号一致
    "license": "MIT",		# 部件License
    "publishAs": "code-segment",		 # HPM包的发布方式
    "segment": {										
        "destPath": ""			
    },		 # 发布类型为code-segment时为必填项,定义发布类型code-segment的代码还原路径(源码路径)			
    "dirs": {"base/sensors/sensor_lite"},	 # HPM包的目录结构,字段必填内容可以留空
    "scripts": {},			            # HPM包定义需要执行的脚本,字段必填,值非必填
    "licensePath": "COPYING",			
    "readmePath": {
        "en": "README.rst"
    },
    "component": {			               # 部件属性
        "name": "sensor_lite",			   # 部件名称		
        "subsystem": "",		           # 部件所属子系统
        "syscap": [],				      # 部
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值