1 env_setup.sh
将doc文档目录下的dockfile 文件内容检查一下 复制到了build目录下    判断bash 替换数据源 source.list  将复制的dockfile移动重命名为rundocker.sh  执行rundocker.sh
这个文件就是 安装了一些软件 

2 prebuilts_download.sh
检查环境 执行prebuilts_download.py下载一些软件  下软件的时候 
读取prebuilts_download_config.json的配置的哪些软件  到"../openharmony_prebuilts",  解压使用更目录下的perbuilts目录下的软件

3 build.sh
检查环境编译参数 用了hb 就执行main.py没有就执行scripts/entry.py

3.1 entry.py
添加编译参数检查编译参数 执行 build/build_scripts/build.py

3.2 build.py
查找build/config/BUILDCONFIG.gn 作为参数 用Python执行build/hb/main.py

3.3 main.py  
定义了执行各种任务,我们只看看build的任务 _init_build_module方法执行OHOSBuildModule.py ,改类的接口中定义了执行顺序 prebuild,preload,load,gn,ninja, post_build 
上面方法 prebuild 也就是参数传递 绑定

OHOSPreloader.py
执行preload的工作   类的接口preload_interface.py接口中run方法定义了各方法执行流程 
_generate_build_prop  拼接参数key=value输出到本地                "out/preloader/product_name/build.prop"
_generate_build_config_json  将参数整理成json输出成文件到      "out/preloader/product_name/build_config.json"
_generate_parts_json 将参数按key排序放入key为parts的json输出 "out/preloader/product_name/parts.json"
_generate_parts_config_json 将参数:-./替换_ 成json输出到           "out/preloader/product_name/parts_config.json"
_generate_syscap_json  过滤参数中的syscap 输出到  "out/preloader/product_name/syscap.json"
exclusions   "out/preloader/product_name/exclusion_modules.json"

_generate_subsystem_config_json   输出到  "out/preloader/product_name/subsystem_config.json"  先获取产品的子系统_get_product_specific_subsystem

在获取设备的子系统 _get_device_specific_subsystem

将空的配置文件 build/hb 'resources/config/config.json'  输出到 'out/ohos_config.json')   改文件里面的三个路径读取子系统配置
subsystem_config_json device_config_json product_config_json  应该是对应build文件夹下的sub_system_config.json 和 vendor和device下面的三个子系统配置文件夹。
实际情况是空的 loader阶段  有判断为空就写死读取 build下面的 'build/subsystem_config.json'
main.py中的 set_args_resolver = SetArgsResolver(set_args_dict) 填充参数 也有类似判空复制  'build/subsystem_config.json'
SetArgsResolver有参数绑定函数功能   参数的值都 通过绑定函数 赋值到了 config里面  否则找到代码逻辑中的值哪里来
执行的时候不会写默认的参数 默认的参数在'resources/args/default/buildargs.json') 中不同的参数分不同的阶段的phase字段区分 prebuild loader等等阶段
all_args = Arg.read_args_file(module_type)读取参数的时候会把默认参数地址写入

loader.py loader阶段加载子系统  先扫描子系统subsystem_info.py中执行 subsystem_scan.py中执行scan 只扫描vendor和device文件夹下的子系统配置文件,和配置文件中子系统路径下的 'ohos.build'和 'bundle.json' 文件 。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐