Hivgor脚本文件

在构建的生命周期中Hvigor使用两个脚本文件来完成插件、任务以及生命周期hook的注册:

  • hvigorconfig.ts:此文件在整个项目中只有根目录下存在一份,不是构建必须的文件并且默认不存在,如有需要可自行创建,此文件被解析执行的时间较早,可用于在Hvigor生命周期刚开始时操作某些数据。
  • hvigorfile.ts:此文件在每个node下都有一份,是构建的必须文件,在此文件中可以注册插件、任务以及生命周期hook等操作。

任务与任务依赖图

Hvigor是基于任务对您的项目进行自动化构建的,任务(Task)是Hvigor构建过程中的基本工作单元,它定义了构建项目时需要执行的具体工作。任务可以完成多种操作,比如源码编译任务,打包任务或签名任务等。每一种任务的执行逻辑由插件(plugin)提供,插件可以是由hvigor-ohos-plugin提供的默认任务逻辑,也可由您个性化定制。

需要注意的一点是,任务是存在依赖关系的,Hvigor在执行任何任务之前会构建任务依赖图,所有任务会形成一个有向无环图(DAG),如下示例图,任务之间的依赖关系用箭头进行表示:



hvigor插件(hvigor-ohos-plugin)和hvigorfile.ts文件中的构建脚本都将通过任务依赖机制对任务依赖图做出影响。

hvigor-ohos-plugin

hvigor-ohos-plugin是默认的构建插件,为任务(Task)的完成提供业务逻辑支持,比如为Hvigor提供Hap、Har和Hsp打包服务等任务,每一种任务的具体执行逻辑由本模块中不同的插件来提供。

Hvigor与hvigor-ohos-plugin的关系

概述部分提到了Hvigor提供任务注册编排以及配置管理等任务管理机制,它负责控制任务的执行流程,但是并不包含每一个任务的具体业务逻辑,具体逻辑是由hvigor-ohos-plugin提供的。

Hvigor和hvigor-ohos-plugin的关系可以通过下图来说明,Hvigor接受任务的注册并编排任务执行顺序,并按照顺序依次调用hvigor-ohos-plugin中的插件来执行任务。如果您定制了自己的任务逻辑插件并将其注册,hvigor-ohos-plugin也会调用您的个性化插件来完成编译构建流程。

在Hvigor执行构建的过程中,hvigor-ohos-plugin会向Hvigor进行任务的注册,Hvigor会根据构建的任务执行有向图依次调用对应的插件来执行相应任务,在完成编译、打包、签名等一系列任务后,Hvigor也就正式完成了构建。

Hvigor生命周期

生命周期展示了Hvigor编译构建系统如何进行一次完整的编译构建流程。Hvigor的编译构建过程有三个不同的阶段,分为初始化、配置和执行,Hvigor会按顺序运行这些阶段。

  • 初始化:此阶段主要目的为初始化项目的编译参数,构造出项目结构的树形数据模型,每个node为一个HvigorNode对象。
  • 配置:此阶段开始时,所有的node都已经加载完毕,但每个node中还没有加载插件(plugin)、任务(task)和DAG图,此阶段的主要目的就是加载出这些内容。
  • 执行:任务之间的依赖关系决定了任务执行顺序,任务可以并行执行

生命周期及hook点

在Hvigor的生命周期中,以下多个hook点可供您使用,便于您在对应的时机调用某些逻辑。在下图中所有绿色标记的线框为可以使用的hook点

鸿蒙hvigor构建任务依赖与生命周期简介的更多相关文章

  1. Android之Activity生命周期简介

    概述 有图有真相,所以先上图: 上图是从Android官网截下的Activity的生命周期流程图,结构非常清晰,它描述了Activity在其生命周期中所有可能发生的情况以及发生的先后顺序,下面就将结合 ...

  2. vue生命周期简介

    vue生命周期简介 生命周期的钩子 LifeCycle hooks 上面已经能够清晰的看到vue2.0都包含了哪些生命周期的钩子函数~~ 那么 执行顺序以及什么时候执行,我们上代码来看~~~ 生命周期 ...

  3. Vue生命周期简介和钩子函数

    钩子就好像是把人的出生到死亡分成一个个阶段,你肯定是在出生阶段起名字,而不会在成年或者死亡的阶段去起名字.或者说你想在出生阶段去约炮,也是不行的.组件也是一样,每个阶段它的内部构造是不一样的.所以一般 ...

  4. (二)Maven 基本概念——依赖、生命周期、仓库管理、聚合&继承

    1. 依赖配置 1.1 依赖配置主要包含如下元素: <!--添加依赖配置--> <dependencies> <!--项目要使用到junit的jar包,所以在这里添加ju ...

  5. React组件和生命周期简介

        React 简介----React 是 Facebook 出品的一套颠覆式的前端开发类库.为什么说它是颠覆式的呢? 内存维护虚拟 DOM 对于传统的 DOM 维护,我们的步骤可能是:1.初始化 ...

  6. Docker安装,基本概念,执行流程,生命周期简介

    Docker基本概念 在使用Docker前,首先要先知道Docker中这几个常用的概念: 镜像:镜像是文件,只读的,提供了运行完整软硬件应用程序的集装箱. 容器:是镜像的实例,由Docker负责创建, ...

  7. ASP.NET 生命周期 简介

    当我们在浏览器地址栏中输入网址,回车查看页面时,这时会向服务器端(IIS)发送一个request请求,服务器就会判断发送过来的请求页面,  完全识别 HTTP 页面处理程序类后,ASP.NET 运行时 ...

  8. React 生命周期简介

       React 中组件的生命周期会经历如下三个过程:装载过程.更新过程.卸载过程. 装载过程:组件实例被创建和插入 DOM 树的过程: 更新过程:组件被重新渲染的过程: 卸载过程:组件从 DOM 树 ...

  9. 介绍maven构建的生命周期

    介绍maven构建的生命周期 这篇是 https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html 的 ...

  10. Java-Maven-Runoob:Maven构建生命周期

    ylbtech-Java-Maven-Runoob:Maven构建生命周期 1.返回顶部 1. Maven 构建生命周期 Maven 构建生命周期定义了一个项目构建跟发布的过程. 一个典型的 Mave ...

随机推荐

  1. 常用 DNS 查询速度测试

    测试工具 DNS-Benchmark | GitHub 总结 进过多轮测试,我认为: 223.5.5.5 和 223.6.6.6 平均响应时间最短(223.5.5.5 在教育网内疑似无法连通) 114 ...

  2. Visual Studio Code 配置文件关联

    在编写 Linux 的 .service 文件的时候,我发现 .service 文件的本质是 INI 文件.然而 VS Code 却并没有使用 INI 格式进行语法高亮.于是我通过如下设置使 VS C ...

  3. DB\redis\zookeeper分布式锁设计

    redis 参考目录: 生产级Redis 高并发分布式锁实战1:高并发分布式锁如何实现 https://www.cnblogs.com/yizhiamumu/p/16556153.html 生产级Re ...

  4. 一次Java性能调优实践【代码+JVM 性能提升70%】

    这是我第一次对系统进行调优,涉及代码和JVM层面的调优.如果你能看到最后的话,或许会对你日常的开发有帮助,可以避免像我一样,犯一些低级别的错误.本次调优的代码是埋点系统中的报表分析功能,小公司,开发结 ...

  5. git 回退之前某次提交

    git 版本回退,用于误提交或者版本回退 一.回滚到之前的某次版本,且该版本后的提交都不要(用于版本回退) 1).首先查看版本号,用 git log 命令查看要回退的版本对应的commit Id co ...

  6. 前端基本功——面试必问系列(1):都2024了,还没吃透Promise?一文搞懂

    写在前面: 大家好,我是山里看瓜,该系列文章是为了帮助大家不管面试还是开发对前端的一些基本但是很重要的知识点认识更加深入和全面. 想写这个系列文章的初衷是:我发现前端的很多基本知识,使用起来很简单,定 ...

  7. 解锁Java线程池:实战技巧与陷阱规避

    专业在线打字练习网站-巧手打字通,只输出有价值的知识. 一 前言 线程池作为初学者常感困惑的一个领域,本次"巧手打字通课堂"将深入剖析其中几个最为普遍的误区.为了更清晰地阐述这些知 ...

  8. .net6 使用gRPC示例

    创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(客户端),测试项目结构如下: 公共模型 测试接口相关类,放在公共类库中,方便服务端和客户端引用相同模型 public class R ...

  9. Android Qcom USB Driver学习(十)

    本章主要是基于之前的学习,实现一个hidraw的驱动,发现有两种用于识别usb设备的方式,放别是usb_device_id和hid_device_id hid_probe (1)hid_device_ ...

  10. 封装JWT - 生成 jwt 和解析 jwt

    1. ASP.NET Core 身份验证和授权验证的功能由Authentication,Authorization中间件提供 :app.UseAuthentication(),app.UseAutho ...