【鸿蒙系统】 ---Harmony 鸿蒙编译构建指导(一)

news/2024/7/21 12:16:21 标签: harmonyos, 华为

请添加图片描述

  • 💌 所属专栏:【鸿蒙系统】

  • 😀 作  者:我是夜阑的狗🐶

  • 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!

  • 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘

文章目录

  • 前言
  • 一、编译构建
      •  1.基本概念
  • 二、编译方式
      •  1.hb方式
  • 总结


前言

  大家好,又见面了,我是夜阑的狗🐶,本文是专栏【鸿蒙系统】专栏的第1篇文章;
  今天也要开始学习鸿蒙系统了💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。在学习鸿蒙系统过程中,让我最头疼的就是编译速度好慢,从 git 上拉下来的源码编译过程都是全量编译,这让我倍感焦灼,于是就带着问题深入了解一下鸿蒙系统编译过程,看鸿蒙系统是否支持差分编译或者目标编译;

请添加图片描述

  专栏地址:【鸿蒙系统】 , 此专栏是我是夜阑的狗对python脚本处理的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
  如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。


一、编译构建

  OpenHarmony编译子系统是以 GNNinja 构建为基座,对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能扩展的系统,该系统提供以下基本功能:

  • 以部件为最小粒度拼装产品和独立编译。
  • 支持轻量、小型、标准三种系统的解决方案级版本构建,以及用于支撑应用开发者使用IDE开发的SDK开发套件的构建。
  • 支持芯片解决方案厂商的灵活定制和独立编译。

 1.基本概念

  在了解编译构建子系统的能力前,应了解如下基本概念:

  • 平台:开发板和内核的组合,不同平台支持的子系统和部件不同。
  • 产品:产品是包含一系列部件的集合,编译后产品的镜像包可以运行在不同的开发板上。
  • 子系统:OpenHarmony 整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层(详见OpenHarmony技术架构)。

请添加图片描述

系统功能按照“系统 > 子系统 > 部件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或部件。子系统是一个逻辑概念,它具体由对应的部件构成。

  • 部件:对子系统的进一步拆分,可复用的软件单元,它包含源码、配置文件、资源文件和编译脚本;能独立构建,以二进制方式集成,具备独立验证能力的二进制单元。需要注意的是下文中的芯片解决方案本质是一种特殊的部件。
  • 模块:模块就是编译子系统的一个编译目标,部件也可以是编译目标。
  • 特性:特性是部件用于体现不同产品之间的差异。
  • GN:Generate Ninja 的缩写,用于产生 Ninja 文件。
  • Ninja:Ninja是一个专注于速度的小型构建系统。
  • hb:OpenHarmony 的命令行工具,用来执行编译命令。

  基于以上概念,编译子系统通过配置来实现编译和打包,该子系统主要包括:模块、部件、子系统、产品。

在这里插入图片描述
  该图体现了编译子系统的各部分关系,主要体现为:

  • 子系统是某个路径下所有部件的集合,一个部件只能属于一个子系统。
  • 部件是模块的集合,一个模块只能归属于一个部件。
  • 通过产品配置文件配置一个产品包含的部件列表,部件不同的产品配置可以复用。
  • 部件可以在不同的产品中实现有差异,通过变体或者特性 feature 实现。
  • 模块就是编译子系统的一个编译目标,部件也可以是编译目标。

二、编译方式

 1.hb方式

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

hb set

设置要编译的产品

  • hb set 后无参数,进入默认设置流程

  • hb set -root dir可直接设置代码根目录

  • hb set -p设置要编译的产品
    在这里插入图片描述


总结

  感谢观看,如果有帮助到你,请给文章点个赞和收藏,让更多的人看到。🌹 🌹 🌹

在这里插入图片描述

  也欢迎你,关注我。👍 👍 👍

  原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!

更多专栏订阅:

  • 😀 【LeetCode题解(持续更新中)】
  • 🌼 【鸿蒙系统】
  • 👑 【Python脚本笔记】
  • 🚝 【Java Web项目构建过程】
  • 💛 【数字图像处理】
  • 【JavaScript随手笔记】
  • 🤩 【大数据学习笔记(华为云)】
  • 🦄 【程序错误解决方法(建议收藏)】
  • 🚀 【软件安装教程】



订阅更多,你们将会看到更多的优质内容!!


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

相关文章

云原生:重塑未来应用的基石

随着数字化时代的不断深入,云原生已经成为了IT领域的热门话题。它代表着一种全新的软件开发和部署范式,旨在充分利用云计算的优势,并为企业带来更大的灵活性、可靠性和效率。今天我们就来聊一聊这个热门的话题:云原生~ &#x1f4…

cuda从入门到精通(六)共享内存和循环分块实现CUDA矩阵乘

本文系转载,出处:https://mp.weixin.qq.com/s/1w1WFPoUEvVECsurqmvJDw 在CUDA编程中,共享内存和循环分块(loop tiling)是两种常见的优化策略,它们可以帮助我们提高矩阵乘法的性能。 共享内存(Sh…

竞争优势:大型语言模型 (LLM) 如何重新定义业务策略

人工智能在内容创作中的突破 在当今快节奏的商业环境中,像 GPT-4 这样的大型语言模型 (LLM) 不再只是一种技术新颖性; 它们已成为重新定义跨行业业务战略的基石。 从增强客户服务到推动创新,法学硕士提供了企业不容忽视的竞争优势。 1. 加强…

Flutter与Xamarin跨平台APP开发框架的区别

嘿,各位亲爱的朋友们!大家好,我是咕噜铁蛋!今天我们要探讨的话题是:Flutter与Xamarin这两款热门的跨平台APP开发框架。我深知选择合适的开发工具对于开发者来说有多么重要。那么,当我们需要开发跨平台应用时…

Python使用whisper实现语音识别(ASR)

目录 Whisper的安装 Whisper的基本使用 识别结果转简体中文 断句 Whisper的安装 Whisper是OpenAI的一个强大的语音识别库,支持离线的语音识别。在使用之前,需要先安装它的库: pip install openai-whisper 使用whisper,还需…

谷歌发布Bard AI以与ChatGPT/GPT-4竞争

Google发布Bard AI,与ChatGPT/GPT-4竞争 概述 谷歌近日推出了一款名为Bard的创新型AI聊天机器人,旨在与OpenAI的ChatGPT和微软的Bing Chat竞争。与同类产品不同,Bard能够直接从其模型中生成信息,而不是检索搜索结果。Bard被视为…

Hive 使用 LIMIT 指定偏移量返回数据

Hive 使用 LIMIT 指定偏移量返回数据 LIMIT 子句可用于限制SELECT语句返回的行数。 LIMIT 接受一个或两个数字参数,这两个参数必须都是非负整数常量。第一个参数指定要返回的第一行的偏移量(从Hive 2.0.0开始),第二个参数指定要返…

resize-observer源码解读

resize-observer github 地址:https://github.com/devrelm/resize-observer 本地启动 npm installnpm startnode 18.16.0 (npm 9.5.1) 启动失败报错 node:internal/crypto/hash:71this[kHandle] new _Hash(algorithm, xofLen);^Error: error:0308010C:digital …