当前位置: 首页 > news >正文

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)开发学习手册》

相关文章:

HarmonyOS—配置编译构建信息

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

Chrome浏览器好用的几个扩展程序

Chrome好用的扩展程序 背景目的介绍JsonHandle例子未完待续。。。。。。 背景 偶然在往上看到Chrome有很多好用的扩展程序,比较好用,因此记录下比较实用的扩展程序。 目的 记录Chrome浏览器好用的插件。 介绍 JsonHandle下载以及无法扩展插件的解决…...

Enzo Life Sciences Cortisol(皮质醇) ELISA kit

皮质醇又称为氢化可的松,是一种由胆固醇合成的类固醇激素。它是肾上腺皮质产生和分泌的主要糖皮质激素。皮质醇在血液中以游离皮质醇的形式存在,或与皮质类固醇结合球蛋白(CBG)结合。皮质醇水平在早上7点左右最高,晚上最低。皮质醇可以调节新…...

面试经典150题 -- 二分查找 (总结)

总的链接 : 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台 二分算法模板 : 详见 : 基础二分学习笔记-CSDN博客 35 . 搜索插入位置 链接 : . - 力扣(LeetCode) 思路 : 用二分查找第一个>t…...

蓝牙耳机怎么选择比较好?2024年热门机型推荐大揭秘!

​蓝牙耳机已经成为了我们日常生活中不可或缺的一部分,随着技术的发展,人们对蓝牙耳机的要求也在不断提升,不仅希望音质出色,还希望能够在不同的场景下使用。然而,如何挑选一款适合自己的蓝牙耳机却是一门学问。今天&a…...

强制Unity崩溃的两个方法

在Unity中,这两种方法都可以用于强制使应用程序崩溃,但它们的作用略有不同: Application.ForceCrash(0); 这个方法会强制应用程序崩溃,并且参数传入的是一个整数值。当参数为0时,它会导致应用程序崩溃并显示一个“Acce…...

中间件 | Redis - [big-key hot-key]

INDEX 1 big-keyhot-key 1 big-key 分类 字符串型 big-key:字符串最大可以到 512M集合型 big-key:集合个数可以到 2^23 问题 内存空间不均匀指令耗时增加:redis 是单线程的,部分操作的时间复杂度是 O(n) 的,big-ke…...

STM32基础--自己构建库函数

什么是 STM32 函数库 固件库是指“STM32 标准函数库”,它是由 ST 公司针对 STM32 提供的函数接口,即API (Application Program Interface),开发者可调用这些函数接口来配置 STM32 的寄存器,使开发人员得以脱离最底层的寄存器操作…...

网站被插入虚假恶意链接怎么办?

在当前的电信和网络环境中,诈骗案件频发,许多受害者不幸上当,主要原因是他们点击了诈骗者发送的假链接。这些诈骗网站经常模仿真实网站的外观,使人难以分辨真伪。那么,我们应如何鉴别这些诈骗链接呢? 下面…...

ThreeJs限制模型拖动的范围

之前有讲过ThreeJs中对模型的拖动功能,使用DragControl组件,将模型放到组件的集合中,就可以拖动点击的模型了,这节细化下怎么控制拖动,比如之拖动z轴,或者限制拖动x轴的范围在某个区间: 首先还是…...

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

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

day37 贪心算法part6

738. 单调递增的数字 中等 提示 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 不知道怎么讲思路……以9287举例&#xff0c;…...

38女神节:剧情热梗小游戏新品!预售1折秒杀,手慢无

抖音热剧情热梗小游戏《逆袭大冒险》登录 Cocos Store 预售开启&#xff01;游戏包含 20剧情 40 关卡&#xff0c;先来看下视频吧&#xff01; 游戏内嵌多种小游戏玩法&#xff0c;是不是很有亲切感呢&#xff1f;抽针、流体、重力 3.8女神节特价预售 欢迎加入迷萌游戏《逆袭大…...

岩土工程监测仪器振弦采集仪的发展历程与国内外研究现状

岩土工程监测仪器振弦采集仪的发展历程与国内外研究现状 岩土工程监测仪器河北稳控科技振弦采集仪是用于测量土体或岩石地层的力学性质、地层结构、地下水位等参数的一种仪器设备。它通过振动在地下传播的声波信号的传播速度和特性&#xff0c;来推断地层的物理性质。以下是对…...

Git 掌握

目录 一、前言 二、centos安装Git 三、Git基本操作 (1) 创建Git本地仓库 (2) 配置Git (3) 认识工作区&#xff0c;暂存区&#xff0c;版本库 四、添加文件 五、查看.git文件 六、修改文件 七、版本回退 八、撤销修改 (1) 场景一 对于还没有add的代码 (2) 场景二 已…...

面试题之——事务失效的八大情况

事务失效的八大情况 一、非public修饰的方法 Transactional注解只能在在public修饰的方法下使用。 /*** 私有方法上的注解&#xff0c;不生效&#xff08;因私有方法Spring扫描不到该方法&#xff0c;所以无法生成代理&#xff09;*/ Transactional private boolean test() …...

一些硬件知识(六)

防反接设计&#xff1a; 同步电路和异步电路的区别: 同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源&#xff0c;因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。 异步电路:电路没有统一的时钟&#xff0c;有些触发器的时钟输入端与时钟脉冲源相连…...

前端React篇之哪些方法会触发 React 重新渲染?重新渲染 render 会做些什么?

目录 哪些方法会触发 React 重新渲染&#xff1f;重新渲染 render 会做些什么&#xff1f;setState()案例需求总结 forceUpdate()案例需求总结 props改变案例需求总结 context改变案例需求总结 哪些方法会触发 React 重新渲染&#xff1f;重新渲染 render 会做些什么&#xff1…...

PHP伪协议是什么?

PHP伪协议是一种特殊的URL协议&#xff0c;它允许PHP直接从PHP内部生成数据或者访问PHP自身处理的数据流&#xff0c;而不需要外部资源。这些协议是由PHP解释器内部定义和处理的&#xff0c;不同于HTTP、FTP、HTTPS等标准网络协议。下面是PHP伪协议的说明&#xff1a; 1. file…...

npm使用

要查看当前 npm 使用的镜像源地址&#xff0c;你可以使用以下命令&#xff1a; npm get registry这个命令会输出当前 npm 配置的镜像源地址。如果你想查看所有可用的镜像源列表&#xff0c;可以使用 nrm 这个工具&#xff0c;它是一个 npm 源管理器&#xff0c;可以帮助你查看…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...