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.mzph.cn/news/727235.shtml

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

相关文章

一文读懂HDMI的演变-从HDMI1.0到HDMI2.1(建议收藏)

HDMI,全称为(High Definition Multimedia Interface)高清多媒体接口,主要用于传输高清音视频信号。 HDMI System HDMI系统包括HDMI的source和HDMI的sink, 其中source 是源端,即信号的来源;Sink的接收端&a…

哇!!!!这个个人博客好好看!!!

做一个个人博客第一步该怎么做? 好多零基础的同学们不知道怎么迈出第一步。 那么,就找一个现成的模板学一学呗,毕竟我们是高贵的Ctrl c v 工程师。 但是这样也有个问题,那就是,那些模板都,太!…

C++性能优化 —— TCMalloc的原理与使用

一、TCMalloc简介 1、TCMalloc简介 TCMalloc(Thread-Caching Malloc,线程缓存的malloc)是Google开发的内存分配算法库,最初作为Google性能工具库 perftools 的一部分,提供高效的多线程内存管理实现,用于替代操作系统…

基于AFDPF主动频率偏移法的孤岛检测Simulink仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于AFDPF主动频率偏移法的孤岛检测Simulink仿真。 2.系统仿真结果 3.核心程序与模型 版本:MATLAB2022a 36 4.系统原理简介 在分布式发电系统中,孤…

express基础

express express介绍 官网传送门基于 Node.js 平台,快速、开放、极简的 Web 开发框架express特点 Web 应用 Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。…

详讲Spring的面向切片编程(AOP)二

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

3月7日代码随想录组合及优化

77.组合 77. 组合 - 力扣(LeetCode) 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3…

【手游联运平台搭建】游戏平台的作用

随着科技的不断发展,游戏行业也在不断壮大,而游戏平台作为连接玩家与游戏的桥梁,发挥着越来越重要的作用。游戏平台不仅为玩家提供了便捷的游戏体验,还为游戏开发者提供了广阔的市场和推广渠道。本文将从多个方面探讨游戏平台的作…

el-table 表格多选, 批量删除功能

一、基础的多选el-table ElementUI 提供了多选行table&#xff0c;同时若依框架也提供了成熟的多选表格。 1.table基础结构 需要绑定selection-change方法 <el-tablev-loading"loading"stripe:data"productList"selection-change"handleSelect…

node的安装与介绍

安装 下载地址 node官网首页就会有两个安装选择&#xff0c;会根据当前电脑的系统自动显示对应的安装包&#xff0c;一个长期维护版&#xff08;LTS&#xff09;,一个是尝鲜版&#xff0c;记住选择LTS版本 安装指定版本下载截图 安装过程截图&#xff08;非常简单&#xff…

计算机设计大赛 深度学习花卉识别 - python 机器视觉 opencv

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &a…

C++ 路径问题

目录 例1 例2 例3 例4 例5 例6 例1 62. 不同路径 1.初始化 2.当前位置的条数&#xff0c;就是上面位置的条数 &#xff0c;加上其左边位置的条数&#xff0c;dp[i][j] dp[i - 1][j] dp[i][j - 1]; 参考代码 class Solution { public:int uniquePaths(int m, int n) …

个推与华为深度合作,成为首批支持兼容HarmonyOS NEXT的服务商

自华为官方宣布HarmonyOS NEXT鸿蒙星河版开放申请以来&#xff0c;越来越多的头部APP宣布启动鸿蒙原生开发&#xff0c;鸿蒙生态也随之进入全新发展的第二阶段。 作为华为鸿蒙生态的重要合作伙伴&#xff0c;个推一直积极参与鸿蒙生态建设。为帮助用户在HarmonyOS NEXT上持续享…

力扣刷题Days11第二题--141. 环形链表(js)

目录 1,题目 2&#xff0c;代码 2.1快慢指针 2.2&#xff0c;哈希表 3&#xff0c;学习与总结 3.1自己尝试写快慢指针 反思 1,题目 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&…

PostgreSQL安装教程

系统环境 下载压缩包 下载压缩包 解压压缩包 查看解压文件 编译安装 编译 安装 用户权限和环境变量设置 创建用户 创建数据目录和日志目录 设置权限 设置环境变量 初始化数据库 数据库访问控制配置文件 postgresql.conf pg_hba.conf PostgreSQL启动与关闭 手…

Docker:部署微服务集群

1. 部署微服务集群 实现思路&#xff1a; ① 查看课前资料提供的cloud-demo文件夹&#xff0c;里面已经编写好了docker-compose文件 ② 修改自己的cloud-demo项目&#xff0c;将数据库、nacos地址都命名为docker-compose中的服务名 ③ 使用maven打包工具&#xff0c;将项目…

Pytorch入门实战 P1-实现手写数字识别

目录 一、前期准备&#xff08;环境数据&#xff09; 1、首先查看我们电脑的配置&#xff1b; 2、使用datasets导入MNIST数据集 3、使用dataloader加载数据集 4、数据可视化 二、构建简单的CNN网络 三、训练模型 1、设置超参数 2、编写训练函数 3、编写测试函数 4、…

子事务的应用

子事务的应用 1. 为什么要使用子事务&#xff1f; 为了防止接口执行失败时&#xff0c;导致事务回滚&#xff0c;接口日志记录不到日志表里面&#xff0c;因而将记录日志表的方法写成子事务的方法。 2. 怎么使用子事务&#xff1f; 在方法名后面加上“_RequiresNew”&#xff…

文物藏品信息管理系统的优势

本系统支持一普标准所有管理信息&#xff0c;包括保管信息、基本情况、鉴定信息、考古发掘信息、来源信息、流传经历、损坏记录、移动记录、修复记录、展览信息、著录信息、收藏单位信息等的管理和维护。 能够实现对藏品信息进行动态管理&#xff0c;提供藏品信息管理指标的维护…

《人工智能怎么学》荣获2023年吴文俊人工智能科学技术奖及赠书活动

中国人工智能学会官网&#xff08;www.caai.cn&#xff09;近日正式公布了2023年吴文俊科学技术奖获奖名单&#xff0c;图书《人工智能怎么学》项目被授予2023年吴文俊人工智能科学技术奖科技进步奖&#xff08;科普项目&#xff09;。2023年吴文俊科学技术奖完整获奖名单见htt…