文件最后提交记录最后更新时间
fix: 精准预下载部件补充 Signed-off-by: xietingwei <xietingwei@h-partners.com>2 个月前
mapping映射修改为中心仓 Signed-off-by: 陈明星 <chenmingxing4@huawei.com> 1 年前
修复代码问题 Signed-off-by: mr_zhao_cn <zhaohang44@huawei.com> 5 个月前
interface仓 部件化整改 Signed-off-by: Keerecles <lishihao4@huawei.com> Change-Id: Ib3ad8b52af79e2fefd022e43554917a7426a7c38 9 个月前
update: 更新文件 README_zh.md Signed-off-by: mr_zhao_cn <zhaohang44@h-partners.com>2 个月前
!6046 merge master into master 新增productcomponents参数,用于二进制包下载过滤 Created-by: mr_zhao_cn Commit-by: zhaohang Merged-by: openharmony_ci Description: ### 相关的Issue https://gitcode.com/openharmony/build/issues/4209 ### 原因(目的、解决的问题等) ### 描述(做了什么,变更了什么) ### 测试用例(新增、改动、可能影响的功能) ### 是否需要同步至release(如: monthly_20221018,OpenHarmony-3.2-Beta5 ... )分支? 必须选择一项(在MarkDown模式下用[x]替换[ ]即可勾选对应选项): - [ ] 是,需要同步的分支: - [x] 否 理由: ### 是否需要刷新社区文档? [编译构建社区文档](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-build-all.md) - [ ] 是,刷新社区文档pr链接: - [x] 否 ### 是否已执行L0用例 - [ ] 已验证 - [ ] 不涉及。如不涉及,请写明理由 See merge request: openharmony/build!60466 个月前
解决part_compile问题 Signed-off-by: xietingwei <xietingwei@h-partners.com>1 年前
README_zh.md

独立编译

简介

独立编译是相对全量源码编译的另一个编译方式,在全量源码编译中,需要准备好编译环境、下载全量源码、执行预编译后才能进行编译,独立编译则不依赖全量源码,独立编译只依赖build仓的源码,以及需要进行独立编译的代码仓的源码,所涉及的对其他部件的依赖,则会以二进制包的形式下载下来,编译时直接进行链接

独立编译时的代码目录结构如下:

├──.repo                      # 编译构建主目录
├── build                  
├── foundation\graphic\graphic_2d(这里以graphic_2d部件为例)
├── prebuilts                 # 执行独立编译预下载后自动生成

下载的二进制包本地存放路径:

~/.hpm

二进制包远程仓库:

repo.harmonyos.com

二进制包依赖定义:

独立编译依赖的二进制项在bundle.json中component->deps字段中定义

机制简介

  • 根据依赖配置下载二进制包

  • 将external_deps解析成对二进制包的依赖

  • -i 选项的编译入口是在bundle.json的build字段中,除test字段外定义的所有构建目标

  • -t 选项的编译入口是build->test字段中定义的构建目标

编译环境准备

准备开发环境

https://gitcode.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-pkg-prepare.md

ubuntu版本至少为22.04

安装库和工具集

https://gitcode.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-pkg-install-package.md

安装hb工具

https://gitcode.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-pkg-install-tool.md

# 若hb工具安装出现问题可尝试如下步骤:
# 首先需要保证python以及python3均指向大于等于python3.8的版本
# 删除旧的hb:
rm -rf ~/.local/lib/python{版本号}/site-packages/hb
rm -rf ~/.local/bin/hb
# 安装修的hb:
python3 -m pip install --default-timeout=300 --user build/hb --index-url https://mirrors.huaweicloud.com/repository/pypi/simple
python3 -m pip install jinja2 --index-url https://mirrors.huaweicloud.com/repository/pypi/simple
# 配置环境变量:
# 在~/.bashrc添加PATH=~/.local/bin:$PATH
source ~/.bashrc

独立编译示例

以syscap_codec部件为例,进行独立编译,执行如下步骤

初始化repo

mkdir code
cd code 
repo init -u https://gitcode.com/openharmony/manifest.git -b master --no-repo-verify

拉build仓

repo sync -c build

拉编译仓

repo sync -c developtools_syscap_codec

执行独立编译预下载

bash build/prebuilts_config.sh --download-sdk

进行独立编译

hb build syscap_codec -i

独立编译常用参数

-t                                      ---只编译bundle.json中声明的测试项
-i                                      ---编译bundle.json中声明的除测试项外其他所有项
--build-target                          ---指定构建目标编译,若在bundle.json中声明的,可以直接指定目标名,否则需要指定路径(相对源码根目录的路径或者gn路径)
--skip-download                         ---跳过二进制包下载
--keep-ninja-going                      ---编译报错后继续编译,直至完成
--gn-flags=--export-compile-commands    ---生成compile_command.json文件
其他更多请通过hb help命令查询usage: hb indep_build [option]中的内容