在进行应用/服务的编译构建前,需要对工程和编译构建的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 7
signingConfigs {
debug {
storeFile file('D:\\Sdk\\storeFile') //本地keystore
storePassword 'storePassword' //生成本地keystore时的storePassword参数
keyAlias 'keyAlias' //生成本地keystore时的alias参数
keyPassword 'keyPassword' //keyPassword参数,pkcs12格式的keystore采用生成本地keystore时的keyPassword参数
signAlg 'SHA256withECDSA' //生成本地keystore时的signAlg参数
profile file('D:\\Sdk\\profile') //导入调试/发布profile
certpath 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 7
defaultConfig {
compatibleSdkVersion 4
}
showInServiceCenter true
buildTypes {
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 true
compileOptions {
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)开发学习手册》