目錄
1 -> HAP/HSP運行時獲取編譯構建參數
1.1 -> 生成BuildProfile類文件
1.2 -> 在代碼中獲取構建參數
1.3 -> 默認參數
1.4 -> 自定義參數
2 -> HAR運行時獲取編譯構建參數
2.1 -> 生成BuildProfile類文件
2.2 -> 在代碼中獲取構建參數
2.3 -> 默認參數
2.4 -> 自定義參數
3 -> 工程級配置自定義構建參數
1 -> HAP/HSP運行時獲取編譯構建參數
1.1 -> 生成BuildProfile類文件
當前有以下幾種方式可以生成BuildProfile類文件:
- 選中需要編譯的模塊,在菜單欄選擇“Build > Generate Build Profile ${moduleName}”。
- 在菜單欄選擇“Build > Build Hap(s)/APP(s) > Build Hap(s)”或“Build > Build Hap(s)/APP(s) > Build APP(s)”。
- 在Terminal中執行如下命令:
hvigorw GenerateBuildProfile
執行完上述操作后,將在“${moduleName} / build / ${productName} / generated / profile / ${targetName} ”目錄下生成BuildProfile.ets文件。示例如下所示:
1.2 -> 在代碼中獲取構建參數
生成BuildProfile類文件后,在代碼中可以通過如下方式引入該文件,其中packageName是模塊級oh-package.json5文件中name字段對應的值。
import BuildProfile from '${packageName}/BuildProfile';
說明
在HSP中使用import BuildProfile from 'BuildProfile'在跨包集成HSP的時候可能會產生編譯錯誤,推薦使用import BuildProfile from '${packageName}/BuildProfile'。
通過如下方式獲取到構建參數:
@State message: string = BuildProfile.BUNDLE_NAME;
1.3 -> 默認參數
生成BuildProfile類文件時,Hvigor會根據當前工程構建的配置信息生成一部分默認參數,開發者可以在代碼中直接使用。
參數名 | 類型 | 說明 |
BUNDLE_NAME | string | 應用的Bundle名稱。 |
BUNDLE_TYPE | string | 應用的Bundle類型。 |
VERSION_CODE | number | 應用的版本號。 |
VERSION_NAME | string | 應用版本號的文字描述。 |
TARGET_NAME | string | Target名稱。 |
PRODUCT_NAME | string | Product名稱。 |
BUILD_MODE_NAME | string | 編譯模式。 |
DEBUG | boolean | 應用是否可調試。 |
1.4 -> 自定義參數
可以在模塊級的build-profile.json5文件中增加自定義參數,在生成BuildProfile類文件后,在代碼中使用自定義參數。
自定義參數可以在buildOption、buildOptionSet、targets節點下的arkOptions子節點中通過增加buildProfileFields字段實現,自定義參數通過key-value鍵值對的方式配置,其中value取值僅支持number、string、boolean類型。
配置示例如下所示:
{"apiType": "stageMode","buildOption": {"arkOptions": {"buildProfileFields": {"data": "Data",}}},"buildOptionSet": [{"name": "release","arkOptions": {"buildProfileFields": {"buildOptionSetData": "BuildOptionSetDataRelease","data": "DataRelease"}}},{"name": "debug","arkOptions": {"buildProfileFields": {"buildOptionSetData": "BuildOptionSetDataDebug","data": "DataDebug"}}}],"targets": [{"name": "default","config": {"buildOption": {"arkOptions": {"buildProfileFields": {"targetData": "TargetData","data": "DataTargetDefault"}}}}},{"name": "default1","config": {"buildOption": {"arkOptions": {"buildProfileFields": {"targetData": "TargetData1","data": "DataTargetDefault1"}}}}},{"name": "ohosTest",}]
}
2 -> HAR運行時獲取編譯構建參數
2.1 -> 生成BuildProfile類文件
當前有以下幾種方式可以生成BuildProfile類文件:
- 選中需要編譯的模塊,在菜單欄選擇“Build > Generate Build Profile ${moduleName}”。
- 選中需要編譯的模塊,在菜單欄選擇“Build > Make Module ${moduleName}”。
- 在Terminal中執行如下命令:
hvigorw GenerateBuildProfile
執行完上述操作后,將在模塊根目錄下生成BuildProfile.ets文件(該文件可放置在.gitignore文件中進行忽略)。示例如下所示:
2.2 -> 在代碼中獲取構建參數
生成BuildProfile類文件后,在代碼中可以通過相對路徑引入該文件,如在HAR模塊的Index.ets文件中使用該文件:
import BuildProfile from './BuildProfile';
通過如下方式獲取到構建參數:
const HAR_VERSION: string = BuildProfile.HAR_VERSION;
2.3 -> 默認參數
生成BuildProfile類文件時,Hvigor會根據當前工程構建的配置信息生成一部分默認參數,開發者可以在代碼中直接使用。
參數名 | 類型 | 說明 |
HAR_VERSION | string | HAR版本號。 |
BUILD_MODE_NAME | string | 編譯模式。 |
DEBUG | boolean | 應用是否可調試。 |
TARGET_NAME | string | 目標名稱。 |
2.4 -> 自定義參數
可以在模塊級的build-profile.json5文件中增加自定義參數,在生成BuildProfile類文件后,在代碼中使用自定義參數。
自定義參數可以在buildOption、buildOptionSet節點下的arkOptions子節點中通過增加buildProfileFields字段實現,自定義參數通過key-value鍵值對的方式配置,其中value取值僅支持number、string、boolean類型。
配置示例如下所示:
{"apiType": "stageMode","buildOption": {"arkOptions": {"buildProfileFields": {"data": "Data",}}},"buildOptionSet": [{"name": "release","arkOptions": {"buildProfileFields": {"buildOptionSetData": "BuildOptionSetDataRelease","data": "DataRelease"}}},{"name": "debug","arkOptions": {"buildProfileFields": {"buildOptionSetData": "BuildOptionSetDataDebug","data": "DataDebug"}}}],"targets": [{"name": "default",}]
}
3 -> 工程級配置自定義構建參數
可以在工程級的build-profile.json5文件中增加自定義參數,該自定義參數會生成到所有模塊的BuildProfile類文件,在代碼中使用自定義參數。
自定義參數可以在工程級products、buildModeSet中的buildOption節點下的arkOptions子節點中通過增加buildProfileFields字段實現,自定義參數通過key-value鍵值對的方式配置,其中value取值僅支持number、string、boolean類型。
配置示例如下所示:
{"app": {"signingConfigs": [],"products": [{"name": "default","signingConfig": "default","compatibleSdkVersion": "5.0.2(14)","runtimeOS": "HarmonyOS","buildOption": {"arkOptions": {"buildProfileFields": {"productValue": "defaultValue"}}}}],"buildModeSet": [{"name": "debug","buildOption": {"arkOptions": {"buildProfileFields": {"productBuildModeValue": "debugValue"}}}},{"name": "release"}]},"modules": [{"name": "entry","srcPath": "./entry","targets": [{"name": "default","applyToProducts": ["default"]}]}]
}
感謝各位大佬支持!!!
互三啦!!!