通过配置多个targets和products实现多环境编译(如dev、test、uat、prod等)
1. 配置HAP的targets
打开文件entry/build-profile.json5
,在targets
中添加其他环境的配置:
// entry/build-profile.json5
{
//...
"targets": [
{
"name": "default",
"source": {
"sourceRoots": ["./src/default"]
}
},
{
"name": "dev",
"source": {
"sourceRoots": ["./src/dev"]
}
},
{
"name": "test",
"source": {
"sourceRoots": ["./src/test"]
}
},
{
"name": "uat",
"source": {
"sourceRoots": ["./src/uat"]
}
}
]
}
这里 default
为生成prod,然后在entry/src
下依次创建上面sourceRoots
中配置的文件夹,如./src/dev
就创建entry/src/dev
文件夹。
里面可以放自定义配置文件,如entry/src/dev/config.ets
要求各个文件夹中的文件名称需要一致,且export出来的变量名需要一致
// entry/src/dev/config.ets
{
export const BASE_URL = '/api'
}
在业务中使用:
import { BASE_URL } from 'entry/config'
console.log(BASE_URL)
2. 配置App中的products
在项目根目录下的build-profile.jsono5
中配置products
及modules
下的targets
:
// /build-profile.json5
{
// ...
"products": [
{
"name": "default",
"signingConfig": "default",
"compatibleSdkVersion": "5.0.0(12)",
"runtimeOS": "HarmonyOS",
"bundleName": "com.bg7zag.app" // 构建出来的包名
},
{
"name": "dev", // 构建的环境名称
"signingConfig": "dev", // 签名在DevEco中签名,每个环境都生成一个签名,然后这里配置上对应的签名,对应的signingConfigs中的name
"compatibleSdkVersion": "5.0.0(12)",
"runtimeOS": "HarmonyOS",
"bundleName": "com.bg7zag.app.dev",
"label": "$string:app_name_dev", // 每个环境包的名称
"icon": "$media:app_icon_dev" // 每个环境包的图标
},
{
"name": "test",
"signingConfig": "test",
"compatibleSdkVersion": "5.0.0(12)",
"runtimeOS": "HarmonyOS",
"bundleName": "com.bg7zag.app.test",
"label": "$string:app_name_test",
"icon": "$media:app_icon_test"
},
{
"name": "uat",
"signingConfig": "uat",
"compatibleSdkVersion": "5.0.0(12)",
"runtimeOS": "HarmonyOS",
"bundleName": "com.bg7zag.app.uat",
"label": "$string:app_name_uat",
"icon": "$media:app_icon_uat"
}
],
"modules": [
{
"name": "entry",
"srcPath": "./entry",
"targets": [
{
"name": "default",
"applyToProducts": [
"default",
]
},
{
"name": "dev", // 上面的default为默认,当prod用,这里新增dev
"applyToProducts": [
"dev" // 在products中对应的name
]
},
{
"name": "test",
"applyToProducts": [
"test"
]
},
{
"name": "uat",
"applyToProducts": [
"uat"
]
}
]
}
],
}
这里需要签名完成后才不报错
3. 签名
点击文件->项目结构->project->Signing Config中点击 + ,新增一个签名
name
建议输入跟products
中的name
一致,点击ok后等待生成签名证书,然后点击ok关闭。再返回去查看App的build-profile.json5
4. 选择环境
根据下图选择编译模式
然后可以根据当前选择的模式进行debug开发或者构建编译了
上面文档如果没有权限,则在最新版文档的指南中搜索“能力说明”