在Android上面会出现一个项目编译多个程序的马甲包,在鸿蒙上面是 多目标产物构建开发实践 来实现马甲包的效果
基本概念
target:对应HAR、HSP、HAP的多目标产物。工程内的每一个模块可以定义多个target,每个Target对应一个定制的HAP、HAR包,通过配置可以实现一个模块构建出不同的HAP、HAR包。 product:对应App的多目标产物。一个HarmonyOS工程的构建产物为App包,一个工程可以定义多个product,每个product对应一个定制化应用包,通过配置可以实现一个工程构建出多个不同的应用包。
1、项目中build-profile.json5配置
1、signingConfigs是配置签名文件地方,如何配置请看下方
2、在signingConfig中配置签名文件
3、在buildProfileFields中自定义参数
4、在bundleName中配置不同的包名
{
"app": {
"signingConfigs": [], //签名文件需要配置
"products": [
{
"name": "default",
"signingConfig": "default",//签名文件 如果需要单独配置,需要在signingConfigs中声明使用
//签名配置
"compatibleSdkVersion": "5.0.1(13)",
"runtimeOS": "HarmonyOS",
"buildOption": {
"strictMode": {
"caseSensitiveCheck": true,
"useNormalizedOHMUrl": true
},
"arkOptions": {
// 工程级自定义参数
"buildProfileFields": {
"IP": 'com.example.default',
"HTTP_TYPE": 'https://',
"PORT": 8888,
"FLAVOR": 'default'
}
}
},
"bundleName": "com.app.example.default",
// 包名
"bundleType": "app",
"versionCode": 1000000,
"versionName": "1.0.0",
"icon": "$media:startIcon", // 应用图标
"label": "$string:app_name"// 应用名称
},
{
"name": "produce",
"signingConfig": "default",//签名文件 如果需要单独配置,需要在signingConfigs中声明使用
//签名配置
"compatibleSdkVersion": "5.0.1(13)",
"runtimeOS": "HarmonyOS",
"buildOption": {
"strictMode": {
"caseSensitiveCheck": true,
"useNormalizedOHMUrl": true
},
"arkOptions": {
// 工程级自定义参数
"buildProfileFields": {
"IP": 'com.example.produce',
"HTTP_TYPE": 'https://',
"PORT": 8888,
"FLAVOR": 'produce'
}
}
},
"bundleName": "com.app.example.produce", // 包名
"bundleType": "app",
"versionCode": 1000000,
"versionName": "1.0.0",
"icon": "$media:startIcon", // 应用图标
"label": "$string:app_name_1"// 应用名称
},
{
"name": "test",
"signingConfig": "default",//签名文件 如果需要单独配置,需要在signingConfigs中声明使用
//签名配置
"compatibleSdkVersion": "5.0.1(13)",
"runtimeOS": "HarmonyOS",
"buildOption": {
"strictMode": {
"caseSensitiveCheck": true,
"useNormalizedOHMUrl": true
},
"arkOptions": {
// 工程级自定义参数
"buildProfileFields": {
"IP": 'com.example.test',
"HTTP_TYPE": 'https://',
"PORT": 8888,
"FLAVOR": 'test'
}
}
},
"bundleName": "com.app.example.test", // 包名
"bundleType": "app",
"versionCode": 1000000,
"versionName": "1.0.0",
"icon": "$media:startIcon", // 应用图标
"label": "$string:app_name_2"// 应用名称
}
],
"buildModeSet": [
{
"name": "debug",
},
{
"name": "release"
}
]
},
"modules": [
{
"name": "entry",
"srcPath": "./entry",
"targets": [
{
"name": "default",
//需要在build-profile.json5配置
"applyToProducts": [
"default"
]
},
{
"name": "produce",
//需要在build-profile.json5配置
"applyToProducts": [
"produce"
]
},
{
"name": "test",
//需要在build-profile.json5配置
"applyToProducts": [
"test"
]
}
]
},
{
"name": "common",
"srcPath": "./common/common",
}
]
}
2、entry下面的build-profile.json5配置
{
"apiType": "stageMode",
"buildOption": {
},
"buildOptionSet": [
{
"name": "release",
"arkOptions": {
"obfuscation": {
"ruleOptions": {
"enable": false,
"files": [
"./obfuscation-rules.txt"
]
}
}
}
},
],
"targets": [
{
"name": "default"
},
{
"name": "produce", //配置不同目标
"source": {
"pages": [
"pages/Index"
]/*,
"sourceRoots": [ //如果有需要可以设置单独入口
*//* "./src/produce_pages"*//*
]*/
},
"resource": {
"directories": [ //配置资源读取位置
"./src/main/produce/resources",
"./src/main/resources"
]
}
},
{
"name": "test", //配置不同目标
"source": {
"pages": [
"pages/Index"
]
/*, "sourceRoots": [ //如果有需要可以设置单独入口
"./src/test_pages"
]*/
},
#### "resource": {
"directories": [ //配置资源读取位置
"./src/main/test/resources",
"./src/main/resources"
]
}
}
]
}
3、自定义资源目录
4、自定义参数
在BuildProfile.ets中出现在我们在工程目录下面build-profile.json5里面定义好的参数
5、找不到BuildProfile.ets怎么办
选择要生成的目录,点击Build选择Generate Build Profile 'common'
6、怎么切换环境
1、点击Product,2、选择Product,3、点击Apply,然后运行项目
7、怎么配置签名文件
8、效果
9、示例代码:
https://gitee.com/androidNTWS/vest-bag
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。