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的小型浏览器中查看网站。因此,无…

数据库基础5

基本连接语句 教程 https://www.bilibili.com/video/BV1pw41147jm 导jar包 https://blog.csdn.net/qq_40893824/article/details/129118784 import java.sql.*;public class test {public static void main(String[] args) throws SQLException {//用户信息和urlString url …

【LeetCode2696】删除子串后的字符串最小长度

1、题目描述 【题目链接】 标签:栈 、字符串、模拟 难度:简单 给你一个仅由 大写 英文字符组成的字符串 s 。 你可以对此字符串执行一些操作,在每一步操作中,你可以从 s 中删除 任一个 “AB” 或 “CD” 子字符串。 通过执行操作…

pytorch导出onnx时遇到不支持的算子怎么解决

在使用pytorch模型训练完成之后,我们现在使用的比较多的一种方法是将pytorch模型转成onnx格式的模型中间文件,然后再根据使用的硬件来生成具体硬件使用的深度学习模型,比如TensorRT。 在从pytorch模型转为onnx时,我们可能会遇到部…

Vue面试之组件通信的方式总结(上篇)

Vue面试之组件通信的方式总结 props父子组件传参props父组件向子组件传参数组形式对象的简单形式对象的复杂形式 props子组件向父组件传参通过传递方法的形式通过传递事件的形式 插槽默认插槽具名插槽作用域插槽 最近在整理一些前端面试中经常被问到的问题,分为vue相…

go 语言常见问题(1)

1. 使用值为 nil 的 slice、map会发生啥 允许对值为 nil 的 slice 添加元素,但对值为 nil 的 map 添加元素,则会造成运行时 panic。 func main() {// slice 正确示例var s []ints append(s, 1)// map 错误示例var m map[string]intm["one"]…

ChatGPT3.5、GPT4.0、DALL·E 3和Midjourney对话与绘画智能体验

MidTool(https://www.aimidtool.com/)是一个集成了多种先进人工智能技术的助手,它融合了ChatGPT3.5、GPT4.0、DALLE 3和Midjourney等不同的智能服务,提供了一个多功能的体验。下面是这些技术的简要介绍: ChatGPT3.5&am…

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

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

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

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

Pytorch将标签转为One-Hot编码

一、标签映射与One-Hot编码过程 先进行标签映射&#xff0c;要为每个分类建立一个整数索引&#xff0c;对于每个样本的标签&#xff0c;使用整数索引创建一个长度为类别总数的二进制向量。这个向量的所有元素都是0&#xff0c;除了与整数索引相对应的位置&#xff0c;该位置的…

引领行业赛道!聚铭网络入选安全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…

uniApp下载图片到手机相册,适配Android、Ios、微信小程序、H5

uniapp下载图片到手机&#xff0c;适配Android、Ios、微信小程序、H5 1.根据不同设备展示不同的按钮1.1 图片显示1.2 微信小程序显示的按钮1.3 h5显示的按钮1.4 app显示的按钮 2. 引入需要用到的文件3. data中需要的数据4. onload方法5. methods需要用到的方法6. 获取手机相册的…

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;和一个相应的值组成。 例如…