OpenHarmony之编译构建使用指导

目录结构

/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 onlyoptional arguments:-h, --help            show this help message and exit-b BUILD_TYPE, --build_type BUILD_TYPErelease or debug version, mini/small only-c COMPILER, --compiler COMPILERspecify compiler, mini/small only-t [TEST [TEST ...]], --test [TEST [TEST ...]]compile test suit-cpu TARGET_CPU, --target-cpu TARGET_CPUselect cpu--dmverity            enable dmverity--tee                 Enable tee-p PRODUCT, --product PRODUCTbuild 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_serversign 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_LEVELspecifies 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 changefor gn related script--device-type DEVICE_TYPEspecifies device type--build-variant BUILD_VARIANTspecifies 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.mzph.cn/news/612100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FlinkAPI开发之窗口(Window)

案例用到的测试数据请参考文章: Flink自定义Source模拟数据流 原文链接:https://blog.csdn.net/m0_52606060/article/details/135436048 窗口的概念 Flink是一种流式计算引擎,主要是来处理无界数据流的,数据源源不断、无穷无尽。…

10个提高 Python Web 开发效率的VS Code插件

VS Code具有灵活、便捷和丰富的可用插件库,是Web开发人员中非常受欢迎的代码编辑器。 本文介绍10个VS Code插件,它们可以提高你作为Web开发人员的工作效率。 1. Live Preview Live Preview插件支持在VS Code的小型浏览器中查看网站。因此,无…

办公场景日益多样化 企业如何保持安全?

当前,企业的办公场景日益多样化。远程办公、移动办公、云办公、分支机构等,这些新的办公场景也带来了新的网络安全挑战。以下将介绍一些办公场景带来的安全威胁。 1、远程办公:员工可以在任何地方工作,但同时也带来了网络安全的隐…

C++游戏引擎中的坐标系

一.Direct3D四大变换 <1.世界矩阵变换: 为了模拟3D物体的旋转,缩放,平移等功能,Direct3D将静态模型的顶点坐标x,y,z经过旋转平移矩阵变换以得到新的顶点坐标x1,y1,z1 D3DXMATRIX mTrans ; D3DXMatrixTranslation (&mTrans , 5 , - 3 , 0 ); g_pd3dDevice->SetTr…

引领行业赛道!聚铭网络入选安全419年度策划“2023年教育行业优秀解决方案”

近日&#xff0c;由网络安全产业资讯媒体安全419主办的《年度策划》2023年度优秀解决方案评选结果正式出炉&#xff0c;聚铭网络「高校大日志留存分析及实名审计解决方案」从众多参选方案中脱颖而出&#xff0c;被评为“教育行业优秀解决方案”&#xff0c;以硬核实力引领行业赛…

java基础 -02java集合之 List,AbstractList,ArrayList介绍

补充上篇 AbstractCollection < E > 在正式List之前&#xff0c;我们先了解我们补充上篇Collection接口的拓展实现&#xff0c;也就是说当我我们需要实现一个不可修改的Collection的时候&#xff0c;我们只需要拓展某个类&#xff0c;也就是AbstractCollection这个类&a…

ChatGPT4+Python近红外光谱数据分析及机器学习与深度学习建模

2022年11月30日&#xff0c;可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT3.5&#xff0c;将人工智能的发展推向了一个新的高度。2023年4月&#xff0c;更强版本的ChatGPT4.0上线&#xff0c;文本、语音、图像等多模态交互方式使其在…

安全漏洞周报(2024.01.01-2023.01.08)

漏洞速览 ■ 用友CRM系统存在逻辑漏洞 漏洞详情 1. 用友CRM系统存在逻辑漏洞 漏洞介绍&#xff1a; 某友CRM系统是一款综合性的客户关系管理软件&#xff0c;旨在帮助企业建立和维护与客户之间的良好关系。它提供了全面的功能&#xff0c;包括销售管理、市场营销、客户服…

1.10 Unity中的数据存储 XML

一、XML 1.介绍 XML是一个文档后缀名是*.xmlXML是一个特殊格式的文档XML是可扩展的标记性语言XML是Extentsible Markup Language的缩 写XML是由万维网联盟(W3C)创建的标记语言&#xff0c;用于定义编码人类和机器可以读取的文档的语法。它通过使用定义文档结构的标签以及如何…

代码随想录算法训练营第二十一天| 回溯 216. 组合总和 III 17. 电话号码的字母组合

216. 组合总和 III 可以参考77.组合中关于选取数组的相关操作。 递归函数的返回值以及参数&#xff1a;一般为void类型 递归函数终止条件&#xff1a;path这个数组的大小如果达到k&#xff0c;说明我们找到了一个子集大小为k的组合了&#xff0c;然后当n为0的时候&#xff0…

Maven报错:Malformed \uxxxx encoding 解决办法

maven构建出现这个Malformed \uxxxx encoding问题&#xff0c;应该是maven仓库里面有脏东西进入了&#xff01; 解决&#xff1a; 将仓库中的resolver-status.properties文件全部干掉。 我使用的everything工具全局搜索resolver-status.properties文件&#xff0c;然后Ctrla,再…

Nodejs 第三十一章(响应头和请求头)

响应头 HTTP响应头&#xff08;HTTP response headers&#xff09;是在HTTP响应中发送的元数据信息&#xff0c;用于描述响应的特性、内容和行为。它们以键值对的形式出现&#xff0c;每个键值对由一个标头字段&#xff08;header field&#xff09;和一个相应的值组成。 例如…

第三十九级台阶

解题思路&#xff1a; 本题运用递归的思想&#xff0c;每走一步可以上一个或者两个台阶&#xff0c;一开始是左脚最后是右脚&#xff0c;所以走的总步数应该为偶数&#xff0c;最后跨过的台阶数应该等于39。 解题代码&#xff1a; public class disnashijiujitaijie {static i…

03. BI - 详解机器学习神器 XGBoost

本文专辑 : 茶桁的AI秘籍 - BI篇 原文链接: https://mp.weixin.qq.com/s/kLEg_VcxAACy8dH35kK3zg 文章目录 集成学习XGBoost Hi&#xff0c;你好。我是茶桁。 学习总是一个循序渐进的过程&#xff0c;之前两节课的内容中&#xff0c;咱们去了解了LR和SVM在实际项目中是如何使…

100V耐压 LED恒流驱动芯片 SL2516D兼容替换LN2516车灯照明芯片

SL2516D LED恒流驱动芯片是一款专为LED照明设计的高效、高精度恒流驱动芯片。与LN2516车灯照明芯片兼容&#xff0c;可直接替换LN2516芯片&#xff0c;为LED车灯照明提供稳定、可靠的电源解决方案。 一、SL2516D LED恒流驱动芯片的特点 1. 高效率&#xff1a;SL2516D采用先进的…

HarmonyOS4.0系统性深入开发17进程模型概述

进程模型概述 HarmonyOS的进程模型&#xff1a; 应用中&#xff08;同一包名&#xff09;的所有UIAbility运行在同一个独立进程中。WebView拥有独立的渲染进程。 基于HarmonyOS的进程模型&#xff0c;系统提供了公共事件机制用于一对多的通信场景&#xff0c;公共事件发布者…

深度解析-Java语言的未来

深度解析-Java语言的未来&#xff0c;文末有我耗时一个月&#xff0c;问遍了身边的大佬&#xff0c;零基础自学Java的路线&#xff0c;适用程序员入门&进阶&#xff0c;Java学习路线&#xff0c;2024新版最新版。 文章目录 Q1 - 能否自我介绍下&#xff1f; Q2 - Java语…

设计模式——抽象工厂模式(Abstract Factory Pattern)

概述 抽象工厂模式的基本思想是将一些相关的产品组成一个“产品族”&#xff0c;由同一个工厂统一生产。在工厂方法模式中具体工厂负责生产具体的产品&#xff0c;每一个具体工厂对应一种具体产品&#xff0c;工厂方法具有唯一性&#xff0c;一般情况下&#xff0c;一个具体工厂…

数据结构与算法之美学习笔记:46 | 概率统计:如何利用朴素贝叶斯算法过滤垃圾短信?

目录 前言算法解析总结引申 前言 本节课程思维导图&#xff1a; 上一节我们讲到&#xff0c;如何用位图、布隆过滤器&#xff0c;来过滤重复的数据。今天&#xff0c;我们再讲一个跟过滤相关的问题&#xff0c;如何过滤垃圾短信&#xff1f; 垃圾短信和骚扰电话&#xff0c;我…

docker安装nodejs,并更改为淘宝源

拉取官方 Node.js 镜像 docker pull node:latest创建 Dockerfile&#xff0c;并更改 NPM 下载源为淘宝源&#xff0c;设置为全局持久化 # 使用最新版本的Node.js作为基础镜像 FROM node:latest# 设置工作目录为/app WORKDIR /app # 更改 NPM 下载源为淘宝源&#xff0c;并设置…