鸿蒙编译构建-多目标产物
此文章内容兼容API12,使用harmony next应用开发
前置概念介绍
1,配置文件介绍:
- build-profile.json5:modules字段,用于记录工程下的模块信息,主要包含模块名称、模块的源码路径以及模块的 target 信息
- oh-package.json5:应用的三方包依赖配置文件
- local.properties: 应用本地环境配置文件
- obfuscation-rules.txt: 应用模块的混淆规则配置文件
- consumer-rules.txt: 库模块默认导出的混淆规则文件,会打包到HAR包中;仅支持HAR模块
2,target 和 product:
- Entry/Feature,构建产物是HAP。一个模块可以定义多个target,每个target对应一个定制的HAP,通过配置可以实现一个模块构建出不同的HAP
- 鸿蒙工程的构建产物是APP包。一个工程可以定义多个product,每个product对应一个定制化应用包,通过配置可以实现一个工程构建出多个不同的应用包。
工程级build-profile.json5
{
"app": {
//必须要有default ,否则编译时会出现错误。
"products": [
...
{
"name": "product_A",
"signingConfig": "default_test",
"compatibleSdkVersion": "5.0.1(13)",
"targetSdkVersion": "5.0.1(13)",
"runtimeOS": "HarmonyOS",
"buildOption": {},
"output": {"artifactName" : 'AppName'},//
"bundleName": "com.XXX.XXX",//标识应用的Bundle名称,用于标识应用的唯一性
"vendor": "$string:app_vendor",
"versionCode": 100000,//标识应用的版本号
"versionName": "1.0.0",//标识向用户展示的应用版本号。
"icon": "$media:icon_0000",//图标
"label": "$string:app_name_0000"//应用名称
},
...
]
}
...
"modules": [
//--------------公共model————start------------------
{
"name": "support",
"srcPath": "./support",
"targets": [
{
"name": "default",
"applyToProducts": [ //将定义的target打包到哪一个product中
"product_A", //将default target打包到product_A APP中
"product_B",
]
}
]
}
]
}
构建目标产物
单击右上角的
图标,指定需要打包的Product及Target,然后单击Apply保存。例如选择"ProductA"中,entry模块对应的"free" Target。
- Product:选择需要构建的 APP 包。
- Build Mode:选择编译模式。
- Product Info:该APP包的BundleName和SigningConfig信息。
- Target Select:选择各个模块的Target,该Target需要包含在定义的Product中才能选择,如果未包含则显示"No Target to apply"