一、编译构建简介
Openharmony的编译构建流程在鸿蒙的开源版本中以V3.1为分界线,流程略有变化。但其中都是ninja与python通过配置文件json,调用不同的交叉工具链来对源码进行编译,然后生成镜像文件。本文首先以Openharmony V3.1版本为例讲解下其编译构建的过程,并以实例的方式对如何添加子系统、模块等进行说明。
后续会对Openharmony V3.2其及衍生的版本进行扩展说明。
二、Openharmony v3.1 L2设备整体编译流程
2.1 编译扫描说明
在编译的时候,需要扫描相应的子系统配置文件。子系统配置文件包含以下三个文件
-
subsystem_config.json
-
{产品名称}.json
-
{产品设备名称}.json
通过此三个文件,加载该产品需要参与编译的所有子部件及配置信息。
2.2 {产品名称}.json
product配置文件,在//productdefine/common/products目录下,以下编译rk3568为例:
当在Openharmony根目录下输入
./build.sh --product-name rk3568
此时首先进入preloader阶段,根据参数rk3568找到//productdefine/common/products/rk3568.json文件,
该配置文件主要包含产品名称,产品厂商,产品设备名,产品类型,产品对应子系统路径,产品所包含的部件等信息。配置该产品对应子系统时在该文件中添加product_build_path表示产品子系统目录。preloader阶段从该目录下加载对应子系统部件配置信息。
{
"product_name": "rk3568", # 产品名称
"product_company": "hihope", # 产品厂商
"product_device": "rk3568", # 产品设备名 ({产品设备名称}.json)
"version": "2.0",
"type": "standard", # 产品类型
"product_build_path": "device/hihope/build", # 产品子系统目录
"parts":{ # 产品所包含的部件
"ace:ace_engine_standard":{},
"ace:napi":{},
"account:os_account_standard":{},
"barrierfree:accessibility":{},
......
}
}
2.3 {产品设备名称}.json
device配置文件,根据2.2描述文件名也为rk3568.json,此文件完整路径即为//productdefine/common/device/rk3568.json,该配置文件主要包含设备名称,设备厂商,设备的目标os与目标cpu,设备对应子系统路径等信息。配置该设备对应子系统时在该文件中添加device_build_path表示设备子系统目录,preloader阶段从该目录下加载对应子系统部件配置信息。
{
"device_name": "rk3568", # 设备名称