当前位置: 首页 > 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)开发学习手册》

http://www.lryc.cn/news/313412.html

相关文章:

  • Chrome浏览器好用的几个扩展程序
  • Enzo Life Sciences Cortisol(皮质醇) ELISA kit
  • 面试经典150题 -- 二分查找 (总结)
  • 蓝牙耳机怎么选择比较好?2024年热门机型推荐大揭秘!
  • 强制Unity崩溃的两个方法
  • 中间件 | Redis - [big-key hot-key]
  • STM32基础--自己构建库函数
  • 网站被插入虚假恶意链接怎么办?
  • ThreeJs限制模型拖动的范围
  • 关于JVM的小总结(待补充)
  • day37 贪心算法part6
  • 38女神节:剧情热梗小游戏新品!预售1折秒杀,手慢无
  • 岩土工程监测仪器振弦采集仪的发展历程与国内外研究现状
  • Git 掌握
  • 面试题之——事务失效的八大情况
  • 一些硬件知识(六)
  • 前端React篇之哪些方法会触发 React 重新渲染?重新渲染 render 会做些什么?
  • PHP伪协议是什么?
  • npm使用
  • 美国国家安全局(NSA)和美国政府将Delphi/Object Pascal列为推荐政府机构和企业使用的内存安全编程语言
  • C++中的内部类
  • 华为“仓颉”不是中文编程:中文编程早有所属,势如破竹
  • Python的基本数据类型
  • 24考研有感
  • k8s中的PV和PVC存储介绍
  • SpringMVC--03--前端传数组给后台
  • 【C++干货基地】六大默认成员函数: This指针 | 构造函数 | 析构函数
  • 99.qt qml-单例程序实现
  • 【软件工程】可用性测试:提升软件、网站与产品用户体验的关键环节
  • EPLAN的国产平替软件?SuperWORKS自动化版尝鲜