1、简单高效的OpenHarmony编译工具链系统OpenHarmony编译框架以GN和Ninja为基座,对构建和配置粒度进行部件化抽象,提供以下基本功能:以部件为最小配置粒度拼装产品。支持三种系统的解决方案级版本构建,以及支撑应用开发者使用IDE开发的SDK开发套件的构建。支持芯片解决方案厂商的灵活定制和独立编译。轻量、小型、标准三种形态统一构建框架介绍Components RulesUIModule RulesCommonReleaseJS RulesSA RulesSDK ReleaseNDK ReleaseTarget Build ReleaseAPI DocOption CheckerC
2、omponents LoaderProductLoaderGN GeneratorZIDL RulesChipset ReleaseSystem ReleaseCore Release64/32 FrameworkMinidebuginfoConfig ParaC/C+RulesEnv SetupHAP RulesResource RulesDependence AnalysisPart Interface CheckerAPI CheckerOpensourcePackagerHBPerformenceMulti Arch SupportChip/System Configration产品、
3、部件、模块组织形态介绍编译系统通过三层的配置来实现编译和打包,包括:产品、部件、模块产品包含部件,通过包含的部件来组装产品包,部件在不同产品中可复用部件需要在配置中声明部件编译入口,部件包含的模块列表部件可以在不同的产品中允许有差异,通过变体或featrue实现模块就是编译系统的一个目标,包括动态库、静态库、配置文件、预编译模块等;一个模块只能归属一个部件产品B产品A部件1部件2部件3模块1模块2模块3模块4模块5部件4部件5模块6模块71.创建产品目录vendor/$device_name/$product_name2.拼装产品config.json定制产品属性和包含部件3.适配OS接口创建
4、hals目录,放入产品对OS适配的源码和编译脚本4.配置系统服务创建init_configs目录,配置init.cfg文件,按需配置系统服务5.配置init进程(仅linux内核需要)在init_configs目录下创建etc目录,配置init.d和fstab文件6.配置文件系统镜像分区大小定制、目录和文件权限设置7.配置产品Patch(可选,视产品需要)在产品目录下创建patch.yml文件。如何添加一个设备形态当前主线支持的架构和功能:如何增加一个新的架构Host架构Target架构功能Linux x86_64Linux x86_64Host库和工具、linux SDKLinux x86_
5、64Ohos arm32/64Ohos单板镜像Linux x86_64Ohosx86_64Ohos模拟器镜像Linux x86_64Windows x86_64Windows SDKMac x86_64Mac x86_64Mac SDKMac arm64 Mac arm64 Mac M1 SDK增加新的架构:1.添加工具链triple,build/toolchain/$os目录的BUILD.gn和$os_toolchain.gn前提:工具链需要先支持指定的triple。2.在Host机器上编译指定Target架构,非默认架构通过target-cpu xx来指定。并支持模块指定工具链同时编译多架
6、构。3.架构相关的模块代码需要进行适配。1.编译入口:hb set/build交互式或者build.sh脚本2.编译目标:产品镜像、SDK、单部件、单模块(Hap应用、可执行文件、库文件、配置文件等)、测试用例等3.指定Target架构或者OS。4.版本类型:Release版本/Debug版本/Asan版本/覆盖率版本、User权限/root权限。5.调试选项:错误不停止、只执行gn阶段、跳过gn阶段、编译日志级别6.指定gn变量值。如何编译hbhb setsethbhb buildbuildpreloaderpr