【HarmonyOS Next之旅】DevEco Studio使用指南(四十一) -> 獲取自定義編譯參數

目錄

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會根據當前工程構建的配置信息生成一部分默認參數,開發者可以在代碼中直接使用。

表1 默認參數說明
參數名類型說明
BUNDLE_NAMEstring應用的Bundle名稱。
BUNDLE_TYPEstring應用的Bundle類型。
VERSION_CODEnumber應用的版本號。
VERSION_NAMEstring應用版本號的文字描述。
TARGET_NAMEstringTarget名稱。
PRODUCT_NAMEstringProduct名稱。
BUILD_MODE_NAMEstring編譯模式。
DEBUGboolean應用是否可調試。

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會根據當前工程構建的配置信息生成一部分默認參數,開發者可以在代碼中直接使用。

表2 默認參數說明
參數名類型說明
HAR_VERSIONstringHAR版本號。
BUILD_MODE_NAMEstring編譯模式。
DEBUGboolean應用是否可調試。
TARGET_NAMEstring目標名稱。

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"]}]}]
}

感謝各位大佬支持!!!

互三啦!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88477.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88477.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88477.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NGINX系統基于PHP部署應用

目錄 部署 配置 部署 準備三臺主機,一臺服務端,兩臺客戶端; 1.在兩臺客戶端主機上分別安裝 MySQL; [rootmaster /]#yum install -y mysql nginx; [rootmaster /]#yum install -y nginx PHP; [rootmaster /]#yum install -y php PHP-m…

ip地址可以精確到什么級別?如何獲取/更改ip地址

IP地址的精確級別和獲取/更改方式取決于其類型(公網IP vs 內網IP),以下是詳細解答: 一、IP地址的精確級別 1. 公網IP地址(互聯網可見) 定位級別精度范圍說明國家/地區級約95%準確通過IP數據庫(…

Linux(Centos 7.6)命令詳解:useradd

1.命令作用創建新用戶或更新默認的新用戶信息(create a new user or update default new user information)2.命令語法Usage: useradd [options] LOGINuseradd -Duseradd -D [options]3.參數詳解OPTION:-b, --base-dir BASE_DIR,新帳戶的主目錄的基本目錄&#xff1…

異步I/O庫:libuv、libev、libevent與libeio

異步I/O編程是現代高性能網絡服務的核心,而libuv、libev、libevent、libeio這四個庫則是這一領域的常青樹。它們雖同屬事件驅動模型,卻在設計哲學、適用場景和實現細節上各具特色。本文將深入剖析其異同。 一、共同點:異步事件驅動 事件循環&…

go go go 出發咯 - go web開發入門系列(四) 數據庫ORM框架集成與解讀

go go go 出發咯 - go web開發入門系列(四) 數據庫ORM框架集成與解讀 往期回顧 go go go 出發咯 - go web開發入門系列(一) helloworldgo go go 出發咯 - go web開發入門系列(二) Gin 框架實戰指南go go g…

CD47.【C++ Dev】list的模擬實現(2)

目錄 1.const修飾的迭代器的實現 方法1:分成兩個類 完整代碼 方法2:STL庫的寫法 2.STL庫的第三個模版參數T*的解釋 ->->的簡寫語法 3.其他成員函數 insert erase push_back、push_front、pop_front、pop_back size clear 析構函數~list() 拷貝構造函數(★…

UI前端與數字孿生融合新領域拓展:智慧教育的虛擬實驗室建設

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!一、引言:虛擬實驗室 —— 打破教育邊界的技術革命傳統實驗教學正面臨 “設備昂貴、…

7. TCP 和 UDP 的區別

總結 TCP 面向連接,需要三次握手建立連接,UDP 無連接,不需要握手,直接發送數據。UDP 有較好的實時性,效率比 TCP 高。TCP 面向字節流,實際上是 TCP 把數據看成一連串無結構的字節流,UDP 是面向報…

iOS Widget 開發-7:TimelineProvider 機制全解析:構建未來時間線

在 WidgetKit 中,TimelineProvider 是小組件生命周期的核心機制之一。它控制著 數據獲取時機、展示內容 與 刷新策略,是實現時間驅動內容更新的基礎。 本文將介紹 TimelineProvider 的工作原理、設計模式、常見場景與高級用法,幫助大家構建智…

基于PHP/MySQL的企業培訓考試系統源碼,高并發、穩定運行,源碼開源可二開

溫馨提示:文末有資源獲取方式這是一款專為企業設計的開源培訓考試系統,采用PHPMySQL技術棧開發,具有高并發處理能力和穩定運行特性。系統源碼完全開放,支持二次開發,可滿足各類企業的培訓考核需求。核心功能特點1. 高性…

時序數據庫InfluxDB

一.定義 時序數據庫 是一種專門用于高效存儲和查詢帶有時間戳的數據的數據庫。如果你的數據是隨著時間變化而不斷產生,并且你想知道過去某一時刻發生了什么,那么你應該用時序數據庫。 這類數據通常具有以下特征: 數據點按時間順序不斷寫入…

2025.07.09華為機考真題解析-第三題300分

?? 點擊直達筆試專欄 ??《大廠筆試突圍》 ?? 春秋招筆試突圍在線OJ ?? 筆試突圍OJ 03. 博物館安保攝像頭配置 問題描述 A先生負責為一家新開的博物館設計安保監控系統。博物館有多個展廳需要監控,每個展廳都有不同的面積。現在有多種型號的監控攝像頭可供選擇,每…

存儲過程封裝:復雜業務邏輯的性能優化

存儲過程作為數據庫層面的重要功能,能夠顯著提升復雜業務邏輯的執行效率。以下是存儲過程在性能優化中的核心優勢、實現策略和實際應用場景。一、存儲過程的核心優勢?網絡傳輸壓縮?存儲過程將多條SQL語句封裝為單次調用,相比應用層多次請求可減少60%-8…

逗號分隔字段統計秘籍:一條SQL實現逗號分割字段的數量分析

一、問題場景與痛點 在數據庫設計中,經常會遇到統計某一些數據的最大數量最小數量等,特別是**逗號分隔字段 **的統計會顯得非常困難 下面以我生產上遇到的一個問題講解: 有個需求是在o_work_order表中統計sn字段中哪個工單號的數量最多&#…

數據庫性能優化指南:解決ORDER BY導致的查詢性能問題( SQL Server )

數據庫性能優化指南:解決ORDER BY導致的查詢性能問題 問題描述 在300萬行的INTERFACE_INTERACTION_LOG表中執行以下查詢: SELECT TOP 1 * FROM INTERFACE_INTERACTION_LOG WHERE 1 1AND (SENDSTATUS 0 OR SENDSTATUS -1)AND SENDMETHOD POSTAND ERRO…

Centos 7下使用C++使用Rdkafka庫實現生產者消費者

1. 了解 Kafka Apache Kafka 是一個分布式流處理平臺,核心功能包括: 發布/訂閱消息系統:解耦生產者和消費者 分布式存儲:持久化、容錯的消息存儲 流處理:實時處理數據流 核心概念: 概念說明BrokerKaf…

UE5多人MOBA+GAS 13、添加死亡、復活邏輯以及布娃娃含物理資產的修改調整

文章目錄使用GE為角色添加定時的Tag控制死亡時間1、添加死亡Tag2、創建死亡GE,并完成相關配置3、在AbilitySystemComponent中監聽屬性的變化,調用GE來添加Tag到角色上4、在角色中監聽ASC傳入的Tag以及Tag的層數,來響應不同的函數添加死亡、復…

Jiasou TideFlow重塑AI SEO全鏈路自動化新標桿

引言 在Google日均處理85億次搜索請求的數字化浪潮中,傳統SEO工作流面臨三大致命瓶頸:人工拓詞效率低下、跨部門協作成本高企、數據監控鏈路斷裂。因此諸如Jiasou AI SEO這樣專門為AI SEO而生的Agent就應運而生了。 背景 Jiasou AIGC不僅僅可以批量生成…

CentOs 7 MySql8.0.23之前的版本主從復制

準備倆臺虛擬機并啟動倆臺虛擬機都開啟mysql后查看二進制日志是否開啟先登錄mysqlmysql -u root -r輸入sql命令show variables like %log_bin%;如果log_bin 的value為OFF則是沒有開啟,跟著下面步驟開啟二進制日志退出mysqlexitvim /etc/my.cnf在最底下添加log_binmy…

Leetcode 3607. Power Grid Maintenance

Leetcode 3607. Power Grid Maintenance 1. 解題思路2. 代碼實現 題目鏈接:3607. Power Grid Maintenance 1. 解題思路 這一題思路上首先是一個DSU的思路,將所有的連通網絡計算出來,并對每一個網絡的節點進行歸類。然后我們需要對每一個網…