[开发|鸿蒙] DevEco Studio编译构建(笔记,持续更新)

构建体系

编译构建是将应用/服务的源代码、资源、第三方库等,通过编译工具转换为可直接在硬件设备上运行的二进制机器码,然后再将二进制机器码封装为HAP/APP软件包,并为HAP/APP包进行签名的过程。其中,HAP是可以直接运行在模拟器或真机设备中的软件包;APP则是用于应用/服务上架到华为应用市场。HAP和APP的关系说明请参考工程介绍。

应用/服务发布形态为APP Pack(Application Package,简称APP),它是由一个或多个HAP(Harmony Ability Package)包以及描述APP Pack属性的pack.info文件组成。

HarmonyOS应用/服务API Version 4 ~ 7和API Version 8 ~ 9的构建工具和构建插件不同。

  • API Version 4 ~ 7构建体系是由Gradle构建工具和构建插件组成;
  • API Version 8 ~ 9构建体系是由Hvigor构建工具和构建插件组成。

Gradle构建工具作为业界流行的自动化构建开源工具,本章节不再赘述,接下来为大家介绍Hvigor构建体系。

Hvigor构建工具:一款全新基于TS实现的前端构建任务编排工具,结合npm包管理机制,主要提供任务管理机制,任务注册编排、工程模型管理、配置管理等关键能力,更符合ArkTS/JS开发者的开发习惯。

构建插件hvigor-ohos-plugin:是基于Hvigor构建工具开发的一个插件,利用Hvigor的任务编排机制实现应用/服务构建任务流的执行,完成HAP/APP的构建打包,应用于应用/服务的构建。

DevEco Studio会自动配置配套版本的编译工具和构建插件依赖,关于构建工具和构建插件的版本配套关系可参考DevEco Studio版本说明。

工程目录及配置文件说明

工程目录及配置文件(API Version 9)

HarmonyOS API Version 9基于Hvigor构建体系,DevEco Studio定义了其工程范式,下面是Hvigor构建体系的工程目录结构示意图:

在这里插入图片描述

如何构建应用/服务

启动应用/服务构建

通过DevEco Studio构建应用/服务的方式有以下两种:

  • 方式一:通过单击在这里插入图片描述或- 在这里插入图片描述按钮,DevEco Studio会启动应用/服务的编译,并将编译后的HAP部署到设备中。这种方式一般用于应用开发阶段进行应用的调试、功能验证等场景。

  • 方式二:通过DevEco Studio的Build菜单栏的编译选项进行构建,HAP的构建结果存放于各模块的“build”文件夹下,APP包的构建结果存放于工程的“build”文件夹下。这种方式可以分别编译HAP和APP包,其中HAP可用于安装到设备中进行功能验证,APP包则用于将应用/服务发布到应用市场。

    在这里插入图片描述

    关于Build菜单下的编译选项说明如下:

    菜单项说明
    Build Hap(s)/APP(s) > Build Hap(s)对整个工程进行构建,若工程中有多个Module,则编译后会生成多个HAP。构建的HAP为debug类型,携带调试信息文件,包括*.js,*.js.map等文件。
    Build Hap(s)/APP(s) > Build APP(s)对整个工程进行构建,将工程构建生成一个APP包,如果存在多个模块,APP包会包含多个HAP,HAP为Release类型,不包含调试信息文件。
    Make Module对工程中当前选择的模块进行构建,只会编译指定的模块名生成HAP、HAR和JAR包。
    Rebuild Project对工程中各个模块进行Clean操作后,重新进行构建,生成对应的HAP。
    Clean Project清除构建过程中的缓存文件,以及构建生成的HAP/APP/HAR/JAR包。
    Generate Key and CSR用于生成申请调试/发布证书所需要的密钥和证书请求文件。

查看编译结果

编译构建成功后,您可以在工程目录中找到对应的编译产物(如APP/HAP)。

  • API Version 8~9编译构建结果:

    在这里插入图片描述

多工程构建

为降低大型应用多个团队协作开发的复杂度,提供多工程开发模式,提高协作开发效率。多工程开发能力支持将大型应用拆分为多个模块,每个模块对应一个单独工程。在每个工程分别编译生成HAP后,需统一打包生成一个APP,用于上架应用市场。

  1. 分别在每个工程的build-profile.json5配置文件中,设置multiProjects字段值为true。
   {  
   	"app": {
   		...
   		"multiProjects": true,  
   	}
   }
  1. 准备好HAP打包工具app_packing_tool.jar(在${HOS_SDK_HOME}/openharmony/版本号/toolchains/lib下)。

  2. 使用如下命令,将多个HAP进行打包。

    • hap-list:多个HAP文件名称,如“1.hap”和“2.hap”,用逗号隔开;
    • out-path:生成的APP名称,如“final.app”
   java -jar app_packing_tool.jar --mode multiApp --hap-list 1.hap,2.hap --out-path final.app

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/601513.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FIFO Generate IP核使用——同步复位

在描述FIFO(First In First Out)或其他存储结构的同步复位(Synchronous Reset)功能时,srst(或wr_rst/rd_rst,即写入和读取时钟域的同步复位信号)仅适用于块RAM(Block RAM…

企业为什么需要主数据管理工具?十大热门主数据管理工具盘点

主数据管理是一套综合性的策略和技术,用于协调和管理企业内用于识别关键业务实体(如客户、产品、供应商和员工)的一致性、准确性和统一性的数据。主数据管理的目的是创建一个“单一真相源”,确保在不同部门和系统之间共享的数据保…

AI预警未来:山体滑坡与塌方事故的潜在发现者

在科技日新月异的今天,人工智能(AI)的应用已经渗透到了我们生活的各个领域。而在防灾减灾的领域中,AI技术的引入无疑为我们打开了一扇新的大门。以梅大高速大埔往福建方向K11900m附近发生的路面塌方灾害为例,我们不禁思…

未授权访问:Redis未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 4、利用redis未授权写入weshell 5、利用redis未授权反弹shell 6、利用redis未授权实现免密登录 防御手段 从这篇文章开始我就要开始学习各种未授权访问的知识和相关的实操实验了,一共有好多篇,内容主…

navicat premium16.3.9重置

软件下载 官网地址:https://navicat.com.cn/products/ # 准备脚本 1、建一个txt 2、复制以下代码 3、修改文件格式为bat 4、运行bat文件 5、重新打开navicat,试用期重置为14 经测试16.2.3以上版本均可用 echo off set dnInfo set dn2ShellFolder set r…

YOLOv8改进 | 主干篇 | 2024.5全新的移动端网络MobileNetV4改进YOLOv8(含MobileNetV4全部版本改进)

一、本文介绍 本文给大家带来的改进机制是MobileNetV4,其发布时间是2024.5月。MobileNetV4是一种高度优化的神经网络架构,专为移动设备设计。它最新的改动总结主要有两点,采用了通用反向瓶颈(UIB)和针对移动加速器优化…

用脚本写一个日期样式的字符

现在想要诸如此类样式的语句:(过去三个月的) 可以用python脚本写: from datetime import date, timedelta# 获取当前日期 current_date date.today()# 定义过去三个月的时间间隔 three_months_ago current_date - timedelta(da…

<网络安全>《79 概念讲解<第十二课 物联网常用协议-(远距离非蜂窝网络)-终端设备>》

协议简称全称名称内容说明ZigBee也称紫蜂低速短距离传输的无线通信协议一种高可靠的无线数传网络,主要特色有低速、低耗电、低成本、支持大量网上节点、支持多种网上拓扑、低复杂度、快速、可靠、安全。ZigBee技术是一种新型技术,主要是依靠无线网络进行…

用一个故事告诉你协程到底是什么

神秘使者 “久闻Java语言跨越平台,框架众多,不过二十年功夫,就已晋升天下第一编程语言,今日一见,果然名不虚传呐!” “使者先生您过奖了,咱们快些走,国王陛下已经等候多时了” 今…

电机控制系列模块解析(18)—— 位置观测器

一、简要综述 无传感器控制策略中观测器的分类,主要分为两类:基于模型的方法(Model Based)和基于显著性的方法(Saliency Based)。在此借用一张文献综述的图片,下面将列出下面借用图片中的各个分…

电脑(爱好者) :基础知识1 了解你的电脑

读懂cpu 您想了解关于您的电脑的信息吗?CPuz是一款常用的系统信息工具,可以提供关于CPU、主板、内存等硬件信息的详细情况。您可以下载并运行该软件,然后查看您的电脑硬件配置信息。 图片来源于网络 CPU-Z 简介 CPU-Z 是一款功能强大且易于使…

【边东随笔】(2) 北美鳄龟的生存智慧:细心 | 信心 | 狠心 | 耐心

非常谨慎,在水域中会先找到躲避将自身安置于有利地形 ( 细心 )。 浮出水面换气,水体稍有异动就会退回水中,优秀掠食者对自身优势牢牢的把握( 信心 )。 非常优雅,猎食动作不存在任何花里胡哨&a…

Spring Boot3.x集成Disruptor4.0

Disruptor介绍 Disruptor是一个高性能内存队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年&…

css--控制滚动条的显示位置

各种学习后的知识点整理归纳,非原创! ① direction属性 滚动条在左侧显示② transform:scaleY() 滚动条在上侧显示 正常的滚动条会在内容超出规定的范围后在区域右侧和下侧显示在有些不正常的需求下会希望滚动条在上侧和左侧显示自己没有想到好的解决方案…

Vue3:menu导航栏出现多个同一跳转路径的菜单处理

文章目录 需求整理实现思路实现过程 需求整理,实现思路 最近公司想将之前老的项目整理出来,因为这个老项目内容太杂什么页面都往里面塞,导致菜单特别多,公司就像将这个老的项目迁出来,这个旧的项目本来是后端PHP写的。…

面试分享——订单超30分钟未支付自动取消用什么实现?如何使用Redis实现延迟队列?

目录 1.订单超时未支付自动取消,这个你用什么方案实现? 2.如何使用Redis实现延迟队列 2.1实验步骤 2.2实现生产可用的延迟队列还需关注什么 3.总结 电商场景中的问题向来很受面试官的青睐,因为业务场景大家都相对更熟悉,相关…

禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》Chapter 5插图

禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》 Chapter 5插图

【Verilog】big_small_cnt

通用大小计数器 timescale 1ns / 1ps // // Company: // Engineer: wengf // Create Date: // Design Name: // Module Name: big_small_cnt // Project Name: // Target Devices: // Tool Versions: // Description: // Dependencies: // Revision: // Revision 0…

超声波测距传感器--第七天

1.超声波测距 型号:HC-SR04 接线参考:模块除了两个电源引脚外,还有TRIG,ECHO引脚,这两个引脚分别接我们开发板的P1.5和P1.6端 超声波模块是用来测量距离的一种产品,通过发送超声波,利用时间差和声音传播速度,计算模块到前方障碍物的距离。 2. 如何让它发送波: Tri…

Linux入门攻坚——22、通信安全基础知识及openssl、CA证书

Linux系统常用的加解密工具:OpenSSL,gpg(是pgp的实现) 加密算法和协议: 对称加密:加解密使用同一个秘钥; DES:Data Encryption Standard,数据加密标准&…
最新文章