鸿蒙(HarmonyOS)开发知识

如何让加快OpenHarmony编译速度

2024-09-25  本文已影响0人  迪士尼在逃程序员

OpenHarmony 有两种编译方式,一种是通过 hb 工具编译,一种是通过 build.sh 脚本编译。本文笔者将提升 build.sh 方式编译速度的方法整理如下:

因为笔者只用 build.sh 脚本编译,没用过 hb 工具,好像下面的选项也可以用于 hb 工具

$ ./build.sh -h
++++++++++++++++++++++++++++++++++++++++
The system shell is bash 4.4.20(1)-release
++++++++++++++++++++++++++++++++++++++++
2023-02-07 12:58:04
-h
Usage: entry.py [options]

Options:
  -h, --help            show this help message and exit
  --source-root-dir=SOURCE_ROOT_DIR
  --product-name=PRODUCT_NAME
  --device-name=DEVICE_NAME
  --target-cpu=TARGET_CPU
  --target-os=TARGET_OS
  --compile-config=COMPILE_CONFIG
  -T BUILD_TARGET, --build-target=BUILD_TARGET
  --gn-args=GN_ARGS     
  --ninja-args=NINJA_ARGS
  -v, --verbose         
  --keep-ninja-going    
  --sparse-image        
  --jobs=JOBS           
  --export-para=EXPORT_PARA
  --build-only-gn       
  --ccache              
  --fast-rebuild        
  --disable-package-image
  --disable-post-build  
  --disable-part-of-post-build=DISABLE_PART_OF_POST_BUILD
  --log-level=LOG_LEVEL
  --device-type=DEVICE_TYPE
  --build-variant=BUILD_VARIANT
  --share-ccache=SHARE_CCACHE
=====build  successful=====

提升 OpenHarmony 编译速度的选项

build.sh 脚本编译 rk3568 方式命令如下:

./build.sh --product-name rk3568 --ccache

通过在该命令后添加如下选项提升编译速度

添加 --jobs 参数

./build.sh --product-name rk3568 --jobs=N

N 为工作线程数(ninja 默认的 N 是 cpu 核数 +2)

添加 --disable-post-build 参数:

./build.sh --product-name rk3568 --disable-post-build

添加 --disable-package-image 参数

./build.sh --product-name rk3568 --disable-package-image

添加 --ccache 参数:

./build.sh --product-name rk3568 --ccache export CCACHE_NOHASHDIR="true" export CCACHE_SLOPPINESS="include_file_ctime"

添加 --fast-rebuild 参数

./build.sh --product-name rk3568 --fast-rebuild

添加 --gn-args enable_notice_collection=false 参数

./build.sh --product-name rk3568 --gn-args enable_notice_collection=false

添加 --build-only-gn 参数

编译流程主要分为:preloader->loader->gn->ninja 这四个过程,标准系统的编译构建过程

添加 --build-target 参数

添加 --gn-args enable_lto_O0=true 参数

添加 --gn-args archive_ndk=false 参数

添加 export NO_DEVTOOL=1 参数

添加 --gn-args skip_generate_module_list_file=true 参数

添加 -T packages --gn-args skip_gen_module_info=true 参数

./build.sh --product-name rk3568 --build-target 模块名 -T packages --gn-args skip_gen_module_info=true

添加 --gn-args load_test_config=false 参数

以上参数可叠加使用

例如全量编译,笔者使用下面这条命令编译速度提升了 120%:

./build.sh --product-name rk3568 --disable-post-build --disable-package-image --gn-args enable_notice_collection=false --gn-args load_test_config=false

添加 --fast-rebuild 参数 方式等效于执行 ninja -C

# 例如编译wukong部件的二进制可执行文件wukong
# 将gn和ninja可执行文件添加到PATH环境变量的方法(临时改变,只能在当前的终端窗口中有效)
export PATH=$PATH:/home/jiajiahao/ohos3.2beta4/sources/prebuilts/build-tools/linux-x86/bin
# 然后在源码目录下执行如下语句
ninja -C out/rk3568 wukong
# 例如编译ace_napi部件的动态库libace_napi.z.so
# 将gn和ninja可执行文件添加到PATH环境变量的方法(临时改变,只能在当前的终端窗口中有效)
export PATH=$PATH:/你自己的源码路径/sources/prebuilts/build-tools/linux-x86/bin
# 然后在源码目录下执行如下语句
ninja -C out/rk3568 ace_napi

将 gn 和 ninja 可执行文件添加到 PATH 环境变量的方法

将 gn 和 ninja 可执行文件添加到 PATH 环境变量的方法(临时改变,只能在当前的终端窗口中有效)

# 找到读者你自己的OpenHarmony源码目录下的gn和ninja可执行文件绝对路径,在源码下/prebuilts/build-tools/linux-x86/bin
export PATH=$PATH:/home/xxx/xxx/sources/prebuilts/build-tools/linux-x86/bin

例如笔者的 gn 和 ninja 可执行文件绝对路径

export PATH=$PATH:/home/jiajiahao/ohos3.2beta4/sources/prebuilts/build-tools/linux-x86/bin

notice file 是否收集的编译选项--gn-args enable_notice_collection=false 是如何支持的

指定编译期间的日志级别

./build.sh --product-name rk3568 --ccache --log-level=debug

写在最后

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙

上一篇 下一篇

猜你喜欢

热点阅读