OpenHarmony之编译构建使用指导

news/2024/7/21 10:08:51 标签: chrome, 前端, 驱动开发, harmonyos, 鸿蒙, 鸿蒙系统

目录结构

/build                            # 编译构建主目录

├── __pycache__                   
├── build_scripts/                # 编译相关的python脚本
├── common/                       
├── config/                       # 编译相关的配置项
├── core
│   ├── gn/                       # 编译入口BUILD.gn配置
    └── build_scripts/            
├── docs                          
gn_helpers.py*                    
lite/                             # hb和preloader入口                      
misc/
├── ohos                          # OpenHarmony编译打包流程配置
│   ├── kits                      # kits编译打包模板和处理流程
│   ├── ndk                       # ndk模板和处理流程
│   ├── notice                    # notice模板和处理流程
│   ├── packages                  # 版本打包模板和处理流程
│   ├── sa_profile                # sa模板和处理流程
│   ├── sdk                       # sdk模板和处理流程,包括sdk中包含的模块配置
│   └── testfwk                   # 测试相关的处理
├── ohos.gni*                     # 汇总了常用的gni文件,方便各个模块一次性import
├── ohos_system.prop              
├── ohos_var.gni*                 
├── prebuilts_download.sh*        
├── print_python_deps.py*         
├── scripts/                      
├── subsystem_config.json         
├── subsystem_config_example.json 
├── templates/                    # c/c++编译模板定义
├── test.gni*                     
├── toolchain                     # 编译工具链配置
├── tools                         # 常用工具
├── version.gni                   
├── zip.py*                       

编译命令

首先,在源码根目录下执行prebuilts脚本进行预编译,安装编译器及二进制工具。

bash build/prebuilts_download.sh

接着,使用命令行方式或hb方式执行编译命令。

1.命令行方式

  • 代码根目录下执行全量版本的编译命令:
  • Release版本 :
    ./build.sh --product-name {product_name}

    Debug版本 :

    ./build.sh --product-name {product_name} --gn-args is_debug=true

    注意: Debug全版本因镜像大小限制,全量编译可能无法烧录,建议单模块编译Debug二进制。使用如下命令单独编译模块:

    ./build.sh --product-name {product_name} --gn-args is_debug=true --build-target {target_name}
  • {product_name}为当前版本支持的平台。比如:hispark_taurus_standard等。
  • 编译完成后,结果镜像保存在 out/{device_name}/packages/phone/images/ 目录下。
  • 编译命令支持选项:./build.sh
    -h, --help                                        # 显示帮助信息并退出
    --source-root-dir=SOURCE_ROOT_DIR                 # 指定路径
    --product-name=PRODUCT_NAME                       # 指定产品名
    --device-name=DEVICE_NAME                         # 指定装置名称
    --target-cpu=TARGET_CPU                           # 指定CPU
    --target-os=TARGET_OS                             # 指定操作系统
    -T BUILD_TARGET, --build-target=BUILD_TARGET      # 指定编译目标,可以指定多个
    --gn-args=GN_ARGS                                 # GN参数,支持指定多个
    --ninja-args=NINJA_ARGS                           # Ninja参数,支持指定多个
    -v, --verbose                                     # 生成时显示所有命令行
    --keep-ninja-going                                # 让Ninja持续到1000000个工作失败
    --jobs=JOBS
    --export-para=EXPORT_PARA
    --build-only-gn                                   # 只做GN解析,不运行Ninja
    --ccache                                          # 可选  如果使用ccache,需要本地安装ccache
    --fast-rebuild                                    # 快速重建,默认值为False
    --log-level=LOG_LEVEL                             # 指定编译期间的日志级别','三个级别可选:debug, info and error,default='info'
    --device-type=DEVICE_TYPE                         # 指定设备类型,默认值为'default'
    --build-variant=BUILD_VARIANT                     # 指定设备操作模式,默认值为'user'
    

    2.hb方式

    hb是OpenHarmony的命令行工具,用来执行编译命令。以下对hb的常用命令进行说明。

    hb set

    设置要编译的产品

    hb set -h
    usage: hb set [-h] [-root [ROOT_PATH]] [-p]
    
    optional arguments:
      -h, --help            show this help message and exit
      -root [ROOT_PATH], --root_path [ROOT_PATH]
                            Set OHOS root path
      -p, --product         Set OHOS board and kernel

    hb build

    编译产品、部件、模块或芯片解决方案。

    hb build -h
    usage: hb build [-h] [-b BUILD_TYPE] [-c COMPILER] [-t [TEST [TEST ...]]] [-cpu TARGET_CPU] [--dmverity] [--tee]
                    [-p PRODUCT] [-f] [-n] [-T [TARGET [TARGET ...]]] [-v] [-shs] [--patch] [--compact-mode]
                    [--gn-args GN_ARGS] [--keep-ninja-going] [--build-only-gn] [--log-level LOG_LEVEL] [--fast-rebuild]
                    [--device-type DEVICE_TYPE] [--build-variant BUILD_VARIANT]
                    [component [component ...]]
    
    positional arguments:
      component             name of the component, mini/small only
    
    optional arguments:
      -h, --help            show this help message and exit
      -b BUILD_TYPE, --build_type BUILD_TYPE
                            release or debug version, mini/small only
      -c COMPILER, --compiler COMPILER
                            specify compiler, mini/small only
      -t [TEST [TEST ...]], --test [TEST [TEST ...]]
                            compile test suit
      -cpu TARGET_CPU, --target-cpu TARGET_CPU
                            select cpu
      --dmverity            enable dmverity
      --tee                 Enable tee
      -p PRODUCT, --product PRODUCT
                            build a specified product with {product_name}@{company}
      -f, --full            full code compilation
      -n, --ndk             compile ndk
      -T [TARGET [TARGET ...]], --target [TARGET [TARGET ...]]
                            compile single target
      -v, --verbose         show all command lines while building
      -shs, --sign_haps_by_server
                            sign haps by server
      --patch               apply product patch before compiling
      --compact-mode        compatible with standard build system set to false if we use build.sh as build entrance
      --gn-args GN_ARGS     specifies gn build arguments, eg: --gn-args="foo="bar" enable=true blah=7"
      --keep-ninja-going    keeps ninja going until 1000000 jobs fail
      --build-only-gn       only do gn parse, do not run ninja
      --log-level LOG_LEVEL
                            specifies the log level during compilationyou can select three levels: debug, info and error
      --fast-rebuild        it will skip prepare, preloader, gn_gen steps so we can enable it only when there is no change
                            for gn related script
      --device-type DEVICE_TYPE
                            specifies device type
      --build-variant BUILD_VARIANT
                            specifies device operating mode
    

    总结

    以上的内容主要简单介绍了《OpenHarmony之编译构建使用指导》的教程

    要想成为一名鸿蒙高级开发,以上知识点是必须要掌握的,除此之外,还需要掌握一些鸿蒙应用开发相关的一些技术,需要我们共同去探索。

    为了节省大家一些查找的时间,这边联合几位行业大佬,为大家准备了一份《Open Harmony4.0&Next》的学习导图从入门到进阶再到南北向开发实战的一整套完整体系,想要学习了解更多鸿蒙开发的相关知识可以借鉴:

    除了以上的知识内容,我还为大家整理了一份鸿蒙 (Harmony OS)开发学习手册》都是整理成PDF文档方式,分享给大家参考学习:《做鸿蒙应用开发到底学习些啥?》

    鸿蒙 (Harmony OS)开发学习手册》

    一、入门必看

    1. 应用开发导读(ArkTS)

    2. 应用开发导读(Java)

    3.......

    二、HarmonyOS 概念

    1. 系统定义

    2. 技术架构

    3. 技术特性

    4. 系统安全

    5......

    三、如何快速入门?《鸿蒙基础入门开发宝典!》

    1. 基本概念

    2. 构建第一个ArkTS应用

    3. 构建第一个JS应用

    4. ……

    四、开发基础知识

    1. 应用基础知识

    2. 配置文件

    3. 应用数据管理

    4. 应用安全管理

    5. 应用隐私保护

    6. 三方应用调用管控机制

    7. 资源分类与访问

    8. 学习ArkTS语言

    9. ……

    五、基于ArkTS 开发

    1. Ability开发

    2. UI开发

    3. 公共事件与通知

    4. 窗口管理

    5. 媒体

    6. 安全

    7. 网络与链接

    8. 电话服务

    9. 数据管理

    10. 后台任务(Background Task)管理

    11. 设备管理

    12. 设备使用信息统计

    13. DFX

    14. 国际化开发

    15. 折叠屏系列

    16. ……

    更多了解更多鸿蒙开发的相关知识可以参考:《鸿蒙开发学习指南》


http://www.niftyadmin.cn/n/5323781.html

相关文章

【Databend】分组集:教你如何快速分组汇总

文章目录 分组集定义和数据准备group by grouping setsgroup by rollupgroup by cube总结 分组集定义和数据准备 分组集是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用"union all"&…

UniApp调试支付宝沙箱(安卓)

先看下这里完整的交互的图:小程序文档 - 支付宝文档中心 一、打包 不管怎样,先打个包先。可以直接使用云端证书、云端打包,只需要指定包名即可。 二、在支付宝开放平台创建应用 这个参考官方的过程就可以了,只要有刚才打的包&…

java List<对象> 根据对象的一个属性进行去重

ArrayList<BasicSectionCfg>list1list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->newTreeSet<>(Comparator.comparing(BasicSectionCfg::getPamKey))),ArrayList::new)); 这段代码使用Java 8中的流API将一个ArrayList<Bas…

STM32——高级定时器输出比较模式实验

1高级定时器输出比较模式实验 1.1高级定时器输出比较模式实验原理 1.2高级定时器输出比较模式实验实验配置步骤 1&#xff0c;配置定时器基础工作参数 HAL_TIM_OC_Init() 2&#xff0c;定时器PWM输出MSP初始化 HAL_TIM_OC_MspInit() 配置NVIC、CLOCK、GPIO等 3&#xff0c;配…

广东省第三届职业技能大赛“网络安全项目”B模块任务书

广东省第三届职业技能大赛“网络安全项目”B模块任务书 PS: 关注鱼影安全第一部分 网络安全事件响应任务 1&#xff1a;应急响应 第二部分 数字取证调查任务 2 &#xff1a;操作系统取证任务 3&#xff1a; 网络数据包分析取证任务 4&#xff1a; 计算机单机取证 第三部分 应用…

MySQL简介、安装及使用

一、MySQL简介 1、MySQL的介绍 MySQL数据库管理系统由瑞典的DataKonsultAB公司研发&#xff0c;该公司被Sun公司收购&#xff0c;现在Sun公司又被Oracle公司收购&#xff0c;因此MySQL目前属于 Oracle 旗下产品。 MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言…

常用的conda命令

常用的conda命令 参考 https://blog.csdn.net/black000shirt/article/details/129791807 1&#xff0c;删除conda虚拟环境 方法一&#xff1a; # 第一步&#xff1a;首先退出环境 conda deactivate# 第二步&#xff1a;查看虚拟环境列表&#xff0c;此时出现列表的同时还会显…

ubuntu主机开启ssh服务,ubuntu通过ssh访问主机

1.ubuntu通过ssh访问主机 要在Ubuntu上通过SSH&#xff08;Secure Shell&#xff09;访问另一台主机&#xff0c;您需要确保几件事情&#xff1a; 目标主机上的SSH服务器&#xff1a;确保您要访问的主机上安装并运行了SSH服务器&#xff08;例如OpenSSH服务器&#xff09;。 …