帮别人做网站的合作协议,企业网站总承包建设模式关键步骤,重庆网络安全公司,网易工作做网站工资奖金高吗概述
OpenHarmony编译子系统是以GN和Ninja构建为基座#xff0c;对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能扩展的系统#xff0c;该系统提供以下基本功能#xff1a;
以部件为最小粒度拼装产品和独立编译。支持轻量、小型、标准三种系…概述
OpenHarmony编译子系统是以GN和Ninja构建为基座对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能扩展的系统该系统提供以下基本功能
以部件为最小粒度拼装产品和独立编译。支持轻量、小型、标准三种系统的解决方案级版本构建以及用于支撑应用开发者使用IDE开发的SDK开发套件的构建。支持芯片解决方案厂商的灵活定制和独立编译。
编译子系统通过配置来实现编译和打包该子系统主要包括模块、部件、子系统、产品。 编译子系统的各部分关系主要体现为
子系统是某个路径下所有部件的集合一个部件只能属于一个子系统。部件是模块的集合一个模块只能归属于一个部件。通过产品配置文件配置一个产品包含的部件列表部件不同的产品配置可以复用。部件可以在不同的产品中实现有差异通过变体或者特性feature实现。模块就是编译子系统的一个编译目标部件也可以是编译目标。
系统架构
编译构建子系统架构 目录结构
SHELL
build
├── build_scripts # 编译相关的python脚本
├── common
├── config # 编译相关的配置项
├── core
│ ├── build_scripts
│ └── gn # 编译入口BUILD.gn配置
├── docs
├── gn_helpers.py
├── lite # hb和preloader入口
├── loader
├── misc
├── ohos
├── ohos.gni # 汇总了常用的gni文件方便各个模块一次性import
├── ohos_system.prop
├── ohos_var.gni
├── prebuilts_download_config.json
├── prebuilts_download.py
├── prebuilts_download.sh
├── print_python_deps.py
├── __pycache__
├── scripts
├── subsystem_config_example.json
├── subsystem_config.json
├── templates # c/c编译模板定义
├── test.gni
├── toolchain # 编译工具链配置
├── tools # 常用工具
├── version.gni
└── zip.py编译构建流程
编译构建可以编译产品、部件和模块但是不能编译子系统。编译构建流程如下图所示主要分设置和编译两步 hb set: 设置要编译的产品。
hb build: 编译产品、开发板或者部件。编译主要过程如下
读取编译配置根据产品选择的开发板读取开发板config.gni文件内容主要包括编译工具链、编译链接命令和选项等。调用GN配置构建目标调用gn gen命令读取产品配置生成产品解决方案out目录和Ninja文件。调用Ninja调用ninja -C out/board/product启动编译。系统镜像打包将部件编译产物打包设置文件属性和权限制作文件系统镜像。
编译构建使用
环境配置
主要是安装编译所需的软件包使用以下脚本一键安装就行
SH
./build/build_scripts/env_setup.sh如果出现hb安装不成功可以重装hb相关命令
SH
#安装
python3 -m pip install --user build/hb#将路径 export PATH~/.local/bin:$PATH 更新到环境变量 ~/.bashrc#卸载
python3 -m pip uninstall ohos-build 编译构建
预编译
在源码根目录下执行prebuilts脚本进行预编译安装编译器及二进制工具。
SHELL
bash build/prebuilts_download.sh执行编译命令
使用命令行方式或hb方式执行编译命令
命令行方式
全量版本的编译
Release版本 :
SHELL
./build.sh --product-name {product_name}Debug版本 :
SHELL
./build.sh --product-name {product_name} --gn-args is_debugtrue --build-target {target_name}hb方式
hb set
设置要编译的产品
hb set 后无参数进入默认设置流程hb set -root dir 可直接设置代码根目录hb set -p 设置要编译的产品hb env
查看当前设置信息
hb build
编译产品、部件、模块或芯片解决方案。
hb build 后无参数会按照设置好的代码路径、产品进行编译编译选项使用与之前保持一致。-f 选项将删除当前产品所有编译产品等同于hb clean hb build.hb build {component_name}基于设置好的产品对应的单板、内核单独编译部件e.g.hb build kv_store)。hb build -p ipcamerahisilicon免set编译产品该命令可以跳过set步骤直接编译产品。在device/board/device_company下单独执行hb build会进入内核选择界面选择完成后会根据当前路径的单板、选择的内核编译出仅包含内核、驱动的镜像。
hb clean
清除 out 目录对应产品的编译产物仅保留args.gn、build.log。清除指定路径可输入路径参数hb clean out/board/product默认将清除当前hb set的产品对应 out 路径。
注更多选项可使用-h查看
更多鸿蒙实战技术学习可以前往主页鸿蒙的学习路线思维图分享略缩图 高清完整版前往主页或者四我保存附带文档