HarmonyOS—配置编译构建信息

在进行应用/服务的编译构建前,需要对工程和编译构建的Module进行设置。API Version 9、API Version 8与API Version 4~7的构建体系不同,因此在设置编译构建信息时也存在差异:

  • API Version 9:需要对构建配置文件、构建脚本、应用依赖的共享包等信息进行设置。
  • build-profile.json5:应用/服务构建配置文件。
  • hvigorfile.ts:自定义编译构建脚本。
  • oh-package.json5:应用的三方包依赖,支持共享包的依赖。
  • API Version 8:需要对构建配置文件、构建脚本、应用依赖的npm包等信息进行设置。
  • build-profile.json5:HarmonyOS应用/服务构建配置文件。
  • hvigorfile.ts:自定义编译构建脚本。
  • package.json:应用的三方包依赖,支持HAR(遵循npm标准规范)和npm包的依赖。
  • API Version 4~7:需要通过build.gradle来对工程编译构建参数进行设置。

build-profile.json5(API Version 8~9)

工程级build-profile.json5

工程级build-profile.json5的示例如下所示:

{"app": { //工程的签名信息,可包含多个签名信息"signingConfigs": [  {"name": "default",  //标识签名方案的名称"type": "HarmonyOS",  //标识HarmonyOS应用//该方案的签名材料"material": {  "certpath": "D:\\SigningConfig\\debug_hos.cer",  //调试或发布证书文件,格式为.cer"storePassword": "******",  //密钥库密码,以密文形式呈现"keyAlias": "debugKey",  //密钥别名信息"keyPassword": "******",  //密钥密码,以密文形式呈现"profile": "D:\\SigningConfig\\debug_hos.p7b",  //调试或发布证书Profile文件,格式为.p7b"signAlg": "SHA256withECDSA",  //密钥库signAlg参数"storeFile": "D:\\SigningConfig\\debug_hos.p12"  //密钥库文件,格式为.p12}}],"compileSdkVersion": 9,  //指定HarmonyOS应用/服务编译时的SDK版本"compatibleSdkVersion": 9,  //指定HarmonyOS应用/服务兼容的最低SDK版本//定义构建的产品品类,如通用默认版、付费版、免费版等"products": [  {"name": "default",  //定义产品的名称,支持定制多product目标产物,具体请参考定制多目标构建产物"signingConfig": "default",  //指定当前产品品类对应的签名信息,签名信息需要在signingConfigs中进行定义}]},"modules": [{"name": "entry",  //模块名称"srcPath": "./entry",  //标明模块根目录相对工程根目录的相对路径"targets": [  //定义构建的APP产物,由product和各模块定义的targets共同定义{"name": "default",  //target名称,由各个模块的build-profile.json5中的targets字段定义"applyToProducts": [  "default"   //表示将该模块下的“default” Target打包到“default” Product中]}]}]
}

模块级build-profile.json5

模块级build-profile.json5的示例如下所示:

{"apiType": 'faMode',  //API类型,支持FA和Stage模型"showInServiceCenter": true,  //是否在服务中心展示"buildOption": {//配置筛选har依赖.so资源文件的过滤规则"napiLibFilterOption": {//按照.so文件的优先级顺序,打包最高优先级的.so文件"pickFirsts": ["**/1.so"],//按照.so文件的优先级顺序,打包最低优先级的.so 文件"pickLasts": ["**/2.so"],//排除的.so文件"excludes": ["**/3.so"],//允许当.so重名冲突时,使用高优先级的.so文件覆盖低优先级的.so文件"enableOverride": true},//cpp相关编译配置"externalNativeOptions": {"path": "./src/main/cpp/CMakeLists.txt",  //CMake配置文件,提供CMake构建脚本"arguments": "",  //传递给CMake的可选编译参数"abiFilters": [  //用于设置本机的ABI编译环境"armeabi-v7a","arm64-v8a"],"cppFlags": ""  //设置C++编译器的可选参数},},"targets": [  //定义的Target,开发者可以定制不同的Target,具体请参考定制多目标构建产物{"name": "default","runtimeOS": "HarmonyOS",},{"name": "ohosTest",}    ]
}

oh-package.json5(API Version 9)

应用/服务支持通过ohpm来安装、共享、分发代码,管理项目的依赖关系。oh-package.json5格式遵循标准的ohpm规范。

工程级oh-package.json5

工程级oh-package.json5的示例如下所示:

{"name": "myapplication","version": "1.0.0","description": "Please describe the basic information.","main": "","author": "","license": "","dependencies": {},"devDependencies": {"@ohos/hypium": "1.0.6"}
}

模块级oh-package.json5

模块级oh-package.json5的示例如下所示:

{"name": "entry","version": "1.0.0","description": "Please describe the basic information.","main": "index.ets","author": "","license": "","dependencies": {},
}

package.json(API Version 8)

应用/服务支持通过npm来安装、共享、分发代码,管理项目的依赖关系。HarmonyOS npm规范是在标准npm规范的基础上,增加了对HarmonyOS平台的拓展。因此,package.json格式遵循标准的npm规范(具体可查阅npm官方文档),接下来主要介绍HarmonyOS npm部分的规范。

工程级package.json

工程级package.json的示例如下所示:

{"name": "myapplication","version": "1.0.0","ohos": {"org": "huawei","buildTool": "hvigor","directoryLevel": "project"},"description": "example description","repository": {},"license": "ISC","dependencies": {"@ohos/hypium": "1.0.5","@ohos/hvigor": "1.4.0","@ohos/hvigor-ohos-plugin": "1.4.0"}
}

HarmonyOS npm相关字段说明如下,其余字段遵循package.json标准规范。

  • ohos闭包:HarmonyOS应用/服务的扩展字段,表示在npm标准规范的基础上叠加了HarmonyOS npm的内容。
  • org:标识HarmonyOS npm包的维护主体。
  • buildTool:标识HarmonyOS npm包的构建工具是hvigor。
  • directoryLevel:标识HarmonyOS npm包是工程的依赖。
  • dependencies闭包:设置工程依赖的npm包及版本,在遵循npm原生的基础上,可以添加@ohos相关的依赖,如构建插件,HarmonyOS
    npm三方共享包等。

模块级package.json

模块级package.json的示例如下所示:

{"license": "ISC","devDependencies": {"@types/libentry.so": "file:./src/main/cpp/types/libentry"},"name": "entry","ohos": {"org": "huawei","directoryLevel": "module","buildTool": "hvigor"},"description": "example description","repository": {},"version": "1.0.0","dependencies": {}
}

关于HarmonyOS npm包的相关字段说明如下,其余字段遵循package.json标准规范。

  • ohos闭包:HarmonyOS应用/服务的扩展字段,表示在npm标准规范的基础上叠加了HarmonyOS npm的内容。
  • org:标识HarmonyOS npm包的维护主体。
  • directoryLevel:标识HarmonyOS npm包是模块级的依赖。
  • buildTool:标识HarmonyOS npm包的构建工具是hvigor。
  • dependencies闭包:设置模块依赖的npm包及版本,在遵循npm原生的基础上,可以添加@ohos相关的依赖,如HarmonyOS
    npm三方共享包等。

build.gradle(API Version 4至7)

工程级build.gradle

工程级build.gradle的示例如下所示:

apply plugin: 'com.huawei.ohos.app'
ohos {compileSdkVersion 7signingConfigs {debug {storeFile file('D:\\Sdk\\storeFile')    //本地keystorestorePassword 'storePassword'           //生成本地keystore时的storePassword参数keyAlias 'keyAlias'                     //生成本地keystore时的alias参数keyPassword 'keyPassword'               //keyPassword参数,pkcs12格式的keystore采用生成本地keystore时的keyPassword参数signAlg 'SHA256withECDSA'               //生成本地keystore时的signAlg参数profile file('D:\\Sdk\\profile')        //导入调试/发布profilecertpath file('D:\\Sdk\\certpath')      //导入调试/发布证书}}
}buildscript {repositories {maven {url 'https://repo.huaweicloud.com/repository/maven/'}maven {url 'https://developer.huawei.com/repo/'}}dependencies {classpath 'com.huawei.ohos:hap:3.1.2.0'classpath 'com.huawei.ohos:decctest:1.2.7.19'}
}allprojects {repositories {maven {url 'https://repo.huaweicloud.com/repository/maven/'            //allowInsecureProtocol = true    //若maven仓是http协议地址,则需要添加该字段,表示允许使用非安全协议的http仓}maven {url 'https://developer.huawei.com/repo/'}}
}

关于工程级build.gradle各字段说明如下:

  • apply plugin:在工程级Gradle中引入打包app的插件,不需要修改。
  • ohos闭包:工程配置,包括如下配置项:
  • compileSdkVersion:应用/服务编译构建的目标SDK版本。
  • signingConfigs:应用/服务的签名信息,包括调试签名信息或发布签名信息。
  • buildscript闭包:工程编译构建所需要的依赖,包括Maven仓地址和依赖的插件版本,例如HarmonyOS编译构建插件和DECC测试插件。
  • allprojects闭包:工程自身所需要的依赖,比如引用第三方库的Maven仓库和依赖包。

模块级build.gradle

模块级build.gradle的示例如下所示:

apply plugin: 'com.huawei.ohos.hap'    //打包hap插件:将entry/feature模块打包为hap的插件
//apply plugin: 'com.huawei.ohos.library'    //打包har插件:将HarmonyOS Library模块打包为har的插件
//apply plugin: 'java-library'    //打包jar插件:将Java Library模块打包为jar的插件
apply plugin: 'com.huawei.ohos.decctest'    //decctest测试框架插件
ohos {compileSdkVersion 7defaultConfig {compatibleSdkVersion 4}showInServiceCenter truebuildTypes {release {proguardOpt {               proguardEnabled true    //开启代码混淆功能               rulesFiles 'proguard-rules.pro'    // 配置混淆规则文件相对路径               consumerRulesFiles 'consumer-rules.pro'    // 配置打包混淆规则文件相对路径,仅在HarmonyOS Library模块中配置}}}packageOptions { exclude "**/*.proto"}    //entryModules "entry"    // 该Feature模块关联的Entry模块// C++工程编译构建代码设置externalNativeBuild {path "src/main/cpp/CMakeLists.txt"   //CMake配置入口,提供CMake构建脚本的相对路径arguments ""   // 传递给CMake的可选编译参数abiFilters "arm64-v8a"  // 用于设置本机的ABI编译环境cppFlags ""   // 设置C++编译器的可选参数}mergeJsSrc truecompileOptions {annotationEnabled true}
}
dependencies {    //entryImplementation project(':entry')    //依赖的entry模块名称implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])testImplementation 'junit:junit:4.13.1'ohosTestImplementation 'com.huawei.ohos.testkit:runner:2.0.0.200'
}
decc {supportType = ['html', 'xml']
}

关于模块级build.gradle各字段说明如下:

  • apply plugin:在模块级build.gradle中引入打包hap、har、Jar以及decctest的插件。
  • ohos闭包:模块配置,包括如下配置项:
  • compileSdkVersion:指定HarmonyOS应用/服务编译时的SDK版本。
  • compatibleSdkVersion:指定HarmonyOS应用/服务兼容的最低SDK版本。
  • showInServiceCenter:是否在服务中心展示,在创建工程时选择了“Show in service
    center”选项会生成该字段。
  • buildTypes:配置build类型以及每种类型构建打包的签名、压缩、混淆的配置。
  • externalNativeBuild:C/C++编译构建代码设置项。
  • entryModules:该Feature模块关联的Entry模块,仅Feature模块存在该字段。
  • packageOptions:将entry/feature模块打包为hap时,排除不需要打包到HAP中的文件。
  • mergeJsSrc:跨设备的应用/服务编译构建,是否需要合并JS代码。Wearable和Lite
    Wearable共用一个工程,如下图所示:当进行编译构建时,将wearable/liteWearable目录下的JS文件与pages目录(Wearable和Lite
    Wearable共用的源码)下的JS文件进行合并打包。

在这里插入图片描述

  • annotationEnabled:支持数据库注释。
  • dependencies闭包:该模块所需的依赖项。
    作为一名合格一线开发程序员,大家心里肯定会有很多疑问!鸿蒙系统这么强大~~

为了能够让大家跟上互联网时代的技术迭代,在这里跟大家分享一下我自己近期学习心得以及参考网上资料整理出的一份最新版的鸿蒙学习提升资料,有需要的小伙伴自行领取,限时开源,先到先得~~~~

领取以下高清学习路线原图请点击→《鸿蒙全套学习指南》纯血鸿蒙HarmonyOS基础技能学习路线图

在这里插入图片描述
领取以上完整高清学习路线图,请点击→《鸿蒙基础入门学习指南》小编自己整理的部分学习资料(包含有高清视频、开发文档、电子书籍等)

在这里插入图片描述

以上分享的学习路线都适合哪些人跟着学习?

-应届生/计算机专业
通过学习鸿蒙新兴技术,入行互联网,未来高起点就业。
-0基础转行
提前布局新方向,抓住风口,自我提升,获得更多就业机会。
-技术提升/进阶跳槽
发展瓶颈期,提升职场竞争力,快速掌握鸿蒙技术,享受蓝海红利。

在这里插入图片描述

总结

如果你觉得这篇内容对你有帮助,我想麻烦大家动动小手给我:点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。

关注我,同时可以期待后续文章ing,不定期分享原创知识。

想要获取更多完整鸿蒙最新VIP学习资料,请点击→《鸿蒙 (Harmony OS)开发学习手册》

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

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

相关文章

中医舌苔笔记

目录 一.不适合舌诊的情况吃了有色东西的食物不要看舌象,晨起不要看舌象尽量不要在饭后半小时内看舌象尽量不要在有色灯光下看舌象吃了某些抗生素、某些化学添加剂后不要看舌象。月经期不要看舌象 二.舌诊顺序三.舌诊脏腑部位分属图四.看舌是看什么?舌体…

世界的本质是旋转(5)-在复平面上驱动软件无线电SDR发射BPSK波形

在上一篇文章中,我们介绍了复平面、拍照采样的一些思维实验。从本节开始,转入现实应用,通过控制复平面向量的位置,实现一个完整的BPSK全双工通信通道。 发射方:通过控制复平面向量在各个时刻的位置来携带信息的技术&a…

qml 怎么将ChartView 的 background 图层的边距设置为 0

qml的ChartView有个background图层,background图层默认是有边距的,而且这个边距是没有属性与方法可以修改的,假如我要创建两个ChartView,让他们纵向紧挨着,实际结果如图: 代码如下: ColumnLayout {id: mainColumnanchors.fill: parentanchors.leftMargin: 10spacing: 0…

网络原理初识

一、IP地址 概念 IP 地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说, IP 地址用于定位主机 的网络地址 。 就像我们发送快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。 二、…

k8s-生产级的k8s高可用(1) 24

高可用集群 实验至少需要三个master(控制节点),一个可以使外部可以访问到master的load balancer(负载均衡)以及一个或多个外部节点worker(也要部署高可用)。 再克隆三台主机 清理并重启 配置两…

C++惯用法之RAII思想: 资源管理

C编程技巧专栏:http://t.csdnimg.cn/eolY7 相关系列文章 C智能指针的自定义销毁器(销毁策略) 目录 1.概述 2.RAII的应用 2.1.智能指针 2.2.文件句柄管理 2.3.互斥锁 3.注意事项 3.1.禁止复制 3.2.对底层资源使用引用计数法 3.3.复制底部资源(深拷贝)或者转移…

2024新版微信小程序登录注册功能的实现,授权登录,退出,缓存讲解,小程序个人中心的实现,修改头像 图片上传功能的实现 新版登陆注册,头像上传,修改昵称

新版小程序授权登录注册获取头像昵称文档 一,无法获取用户的微信头像和昵称 最近好多同学在学习石头哥小程序课程的时候,遇到了下面这样的问题,在小程序授权获取用户头像和昵称时,获取到的是下面这样的。 到底是什么原因导致的…

YOLO v1讲解

YOLO是最经典的一阶目标检测框架,记录一下v1思路。 整体流程 输入数据一张 448 448 3 448 \times 448 \times 3 4484483 的图片,切分成 7 7 7 \times 7 77 的网格将图片经过多层CNN,下采样得到 7 7 30 7 \times 7 \times 30 7730 的f…

代码随想录算法训练营第day9|28. 找出字符串中第一个匹配项的下标、459.重复的子字符串

a.28. 找出字符串中第一个匹配项的下标 题目链接 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示…

关于JVM的小总结(待补充)

JVM组成及他们之间的关系 装载类子系统字节码执行引擎运行时数据区 装载类子系统 类加载器字节码调节器类加载运行时数据区 字节码执行引擎 运行时数据区 线程私有 虚拟机栈本地方法栈程序计数器 线程共享 堆方法区(元空间)

Vue3 中的代理原理详解

Vue3 中的代理原理详解 Vue3 中引入了代理(Proxy)机制,取代了 Vue2 中的 Object.defineProperty() 机制,用于实现数据响应式。代理机制是 ES6 中新增的特性,它可以用来自定义对象中的操作,比如属性查找、赋…

rabbitmq总结

一、初次感知 https://www.cnblogs.com/zqyx/p/13170881.html 这篇文章非常好,讲了一些持久化的原理。 1. 第一次使用rabbitmq发信息 // 创建连接工厂ConnectionFactory connectionFactorynew ConnectionFactory();connectionFactory.setHost("192.168.88.1…

php使用ElasticSearch

ElasticSearch简介 Elasticsearch 是一个分布式的、开源的搜索分析引擎,支持各种数据类型,包括文本、数字、地理、结构化、非结构化。 Lucene与ElasticSearch Apache Lucene是一款高性能的、可扩展的信息检索(IR)工具库&#xf…

Qt添加VTK并绘制图形

文章目录 准备环境使用VS创建Qt Widget项目配置VTK依赖调试C/C链接器 添加vtk窗口测试代码 参考链接: VS2017配置QT环境(详细版)_vs2017 qt-CSDN博客 QT5VTK9.1最新配置方法_qt vtk-CSDN博客 VTK笔记-Qt5.12.11编译VTK9.0.3-QVTKOpenGLNativeWidget-CSDN博客 准…

Java二级--操作题详解(1)

目录 1.第一套: 1.1 基本操作: 1.2 题解分析: 2.1 简单应用: 2.2 解题分析: 3.1 综合应用: 3.2解题分析: 1.第一套: 1.1 基本操作: 在考生文件夹中存有文件名为J…

Leetcode HOT150

55. 跳跃游戏 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例 1 …

C++ · 代码笔记3 · 引用

目录 前言011引用初探_引用与普通变量012引用初探_引用作为函数参数013引用初探_引用作为函数返回值014引用初探_引用返回局部函数造成的错误015引用初探_多级引用020引用与指针递增的区别030const与引用040使用const限定的函数形参引用 前言 本笔记所涉及到的编程环境与 《C …

怎么对接迅雷网盘拉新项目?迅雷网盘怎么做才有效果?

自网盘拉新项目上线以来,网盘市场日益繁荣,各大厂商纷纷进军这一领域。头条网盘、悟空网盘、UC网盘、迅雷网盘等都成为了各个推广达人喜欢的推广项目。其中,迅雷网盘凭借其稳定的服务、强大的功能和广泛的用户基础,成为了市场中的…

西门子S120故障报警F30003的解决办法总结

西门子S120故障报警F30003的解决办法总结 如下图所示,压机在回程时突然出现报警,故障代码为:30003, 如下图所示,查找手册可以看到F30003的报警分析为:直流母线欠压 如下图所示,本来想测量输入端…

三八妇女节智慧花店/自动售花机远程视频智能监控解决方案

一、项目背景 国家统计局发布的2023年中国经济年报显示,全年社会消费品零售总额471495亿元,比上年增长7.2%。我国无人零售整体发展迅速,2014年市场规模约为17亿元。无人零售自助终端设备市场规模超过500亿元,年均复合增长率超50%。…