鸿蒙编译子系统详解(七)hb build流程 target_compilation post_target_compilation post_build

  • _target_compilation()

源码:

def _target_compilation(self):
    self._run_phase(BuildPhase.TARGET_COMPILATION)
    if self.args_dict.get('build_only_gn', None) and not self.args_dict.get("build_only_gn").arg_value:
        self.target_compiler.run()

调用_run_phase()解析参数。

如果存在build_only_gn参数,则跳过随后的编译。

执行target_compiler.run(),进行编译。

TARGET_COMPILATION阶段的参数如下:

参数名称

说明

默认值

keep-ninja-going

跳过错误,直到1000000个失败

false

build-only-gn

跳过ninja

false

    • 参数解析
      • keep-ninja-going:resolve_keep_ninja_going()

target_compiler添加参数-k1000000

      • build-only-gn:resolve_build_only_gn()

    • 运行

执行ninja命令:

prebuilts/build-tools/linux-x86/bin/ninja -w dupbuild=warn -C out/rk3568 images

包括执行脚本、编译、链接、打包镜像等。

  • _post_target_compilation()

源码:

def _post_target_compilation(self):
    self._run_phase(BuildPhase.POST_TARGET_COMPILATION)

解析POST_TARGET_COMPILATION阶段的参数。

POST_TARGET_COMPILATION阶段的参数如下:

参数名称

说明

默认值

build-variant

设备操作模式,可选user、root

root

device-type

设备类型

default

disable-package-image

废弃

false

archive-image

编译完成后压缩镜像

false

rom-size-statistics

统计每一个已编译组件实际rom大小

false

stat-ccache

统计ccache命中率,生成日志

true

get-warning-list

收集编译警告写入文件

true

generate-ninja-trace

计算每一个ninja线程的持续时间,生成跟踪文件

true

compute-overlap-rate

计算post build期间的重叠率

true

deps-guard

简化代码,删除简洁的依赖关系分析,并加快规则检查

true

    • 参数解析
      • build-variant:resolve_build_variant()

更新文件out/rk3568/packages/phone/system/etc/param/ohos.para的内容

更新const.secure和const.debuggable的值

      • device-type:resolve_device_type()

更新const.build.characteristics的值

      • disable-package-image:resolve_disable_package_image()

废弃

      • archive-image:resolve_archive_image()

用tar压缩打包out/rk3568/packages/phone/images文件夹

      • rom-size-statistics:resolve_rom_size_statistics()

统计各部件实际rom大小与bundle.json中大小对比,结果写入out/rk3568/rom_statistics_table.json

      • stat-ccache:resolve_stat_ccache()

执行build/scripts/summary_ccache_hitrate.py脚本,统计ccache命中率,打印信息

      • get-warning-list:resolve_get_warning_list()

执行build/scripts/get_warnings.py脚本,获取编译警告,将其写入文件out/rk3568/packages/WarningList.txt

      • generate-ninja-trace:resolve_generate_ninja_trace()

执行build/scripts/ninja2trace.py脚本,分析ninja日志,生成build.trace.gz文件,用于跟踪ninja编译过程,并进行分析

      • compute-overlap-rate:resolve_compute_overlap_rate()

执行build/ohos/statistics/build_overlap_statistics.py脚本,计算各子系统的构建重叠率,并打印

      • deps-guard:resolve_deps_guard()

执行developtools/integration_verification/tools/deps_guard/deps_guard.py脚本,分析依赖关系,对违规关系进行拦截,并打印信息。

  • _post_build()

def _post_build(self):
    self._run_phase(BuildPhase.POST_BUILD)

解析POST_BUILD阶段的参数。

POST_BUILD阶段的参数如下:

参数名称

说明

默认值

clean-args

编译结束后,清除所有编译产生的参数

true

    • 参数解析
      • clean-args:resolve_clean_args()

调用build/hb/containers/arg.py脚本的clean_args_file()函数,清除out/hb_args目录下的json文件。

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值