-
_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文件。