編譯構建是將應用/服務的源代碼、資源、第三方庫等,通過編譯工具轉換為可直接在硬件設備上運行的二進制機器碼,然后再將二進制機器碼封裝為HAP/APP軟件包,并為HAP/APP包進行簽名的過程。其中,HAP是可以直接運行在模擬器或真機設備中的軟件包;APP則是用于應用/服務上架到華為應用市場。HAP和APP的關系說明請參考工程介紹。
HarmonyOS應用/服務支持API Version 4~9,但API Version 4~7與API Version 8~9在編譯構建體系、工程目錄及配置文件等存在差異,接下來將詳細介紹兩者之間的差異。
構建體系
HarmonyOS應用/服務API Version 4~7和API Version 8~9的構建工具和構建插件不同。
- API Version 4~7構建體系是由Gradle構建工具和構建插件組成;
- API Version 8~9構建體系是由Hvigor構建工具和構建插件組成。
Gradle構建工具作為業界流行的自動化構建開源工具,本章節不再贅述,接下來為大家介紹Hvigor構建體系。
Hvigor構建工具:一款全新基于TS實現的前端構建任務編排工具,結合npm包管理機制,主要提供任務管理機制,任務注冊編排、工程模型管理、配置管理等關鍵能力,更符合ArkTS/JS開發者的開發習慣。
構建插件hvigor-ohos-plugin:是基于Hvigor構建工具開發的一個插件,利用Hvigor的任務編排機制實現應用/服務構建任務流的執行,完成HAP/APP的構建打包,應用于應用/服務的構建。
DevEco Studio會自動配置配套版本的編譯工具和構建插件依賴,關于構建工具和構建插件的版本配套關系可參考DevEco Studio版本說明。如需修改構建工具和構建插件版本,API 9及以上版本和API 8版本工程的修改位置不同:
- API 9及以上版本需修改hvigor目錄下的hvigor-config.json5文件,示例如下。
{“hvigorVersion”: "2.2.1","dependencies": {"@ohos/hvigor-ohos-plugin": "2.2.1"}
}
- API 8版本需要在工程級的package.json文件中配置相應的版本依賴,示例如下。
{..."dependencies": {"@ohos/hvigor": "1.4.0","@ohos/hvigor-ohos-plugin": "1.4.0"}
}
工程目錄及配置文件說明
工程目錄及配置文件(API Version 9)
HarmonyOS API Version 9基于Hvigor構建體系,DevEco Studio定義了其工程范式,下面是Hvigor構建體系的工程目錄結構示意圖:
關于Hvigor構建體系中的構建配置文件(build-profile.json5)、構建腳本(hvigorfile.ts)、依賴配置(oh-package.json5)的詳細說明請參考配置編譯構建信息章節。
工程目錄及配置文件(API Version 8)
HarmonyOS API Version 8基于Hvigor構建體系,DevEco Studio定義了其工程范式,下面是Hvigor構建體系的工程目錄結構示意圖:
關于Hvigor構建體系中的構建配置文件(build-profile.json5)、構建腳本(hvigorfile.ts)、依賴配置(package.json)的詳細說明請參考配置編譯構建信息章節。
工程目錄及配置文件(API Version 4~7)
HarmonyOS API Version 4~7基于Gradle構建體系,DevEco Studio定義了其工程范式,下面是Gradle構建體系的工程目錄結構示意圖:
關于build.gradle詳細說明請參考配置編譯構建信息章節。
如何構建應用/服務
啟動應用/服務構建
說明
在完成應用/服務開發后,如果開發者需要將應用包上傳到AGC平臺的軟件包管理或第三方管理平臺草稿箱中,可選擇通過Upload Project完成編譯并上傳,具體請參見通過DevEco Studio編譯和上傳軟件包。
通過DevEco Studio構建應用/服務的方式有以下兩種:
- 方式一:通過單擊或按鈕,DevEco
Studio會啟動應用/服務的編譯,并將編譯后的HAP部署到設備中。這種方式一般用于應用開發階段進行應用的調試、功能驗證等場景。 - 方式二:通過DevEco
Studio的Build菜單欄的編譯選項進行構建,HAP的構建結果存放于各模塊的“build”文件夾下,APP包的構建結果存放于工程的“build”文件夾下。這種方式可以分別編譯HAP和APP包,其中HAP可用于安裝到設備中進行功能驗證,APP包則用于將應用/服務發布到應用市場。
關于Build菜單下的編譯選項說明如下:
查看編譯過程
啟動編譯后,您可以在底部工具欄窗口查看編譯任務的詳細信息,例如執行的編譯流程、任務的執行時間等信息。如果在編譯構建過程中出現錯誤,您可以根據編譯任務的詳細錯誤說明進行問題的定位。
API Version 8~9工程編譯構建示意圖如下:
API Version 4~7工程編譯構建示意圖如下:
另外,針對Native C++開發方式,DevEco Studio支持的編譯工具鏈為CMake和NinJa,在啟動編譯后,可以在底部工具欄窗口的輸出內容中查看到編譯工具鏈的具體配置信息。
CMake的配置信息如下所示。
NinJa的配置信息如下所示。
查看編譯結果
編譯構建成功后,您可以在工程目錄中找到對應的編譯產物(如APP/HAP)。
- API Version 8~9編譯構建結果:
- API Version 4~7編譯構建結果:
多工程構建
為降低大型應用多個團隊協作開發的復雜度,提供多工程開發模式,提高協作開發效率。多工程開發能力支持將大型應用拆分為多個模塊,每個模塊對應一個單獨工程。在每個工程分別編譯生成HAP后,需統一打包生成一個APP,用于上架應用市場。
1.分別在每個工程的build-profile.json5配置文件中,設置multiProjects字段值為true。
{"app": {..."multiProjects": true,}
}
2.準備好HAP打包工具hap_packing_tool.jar(在${HOS_SDK_HOME}/openharmony/版本號/toolchains/lib下)。
3.使用如下命令,將多個HAP進行打包。
- hap-list:多個HAP文件名稱,如“1.hap”和“2.hap”,用逗號隔開;
- out-path:生成的APP名稱,如“final.app”
java -jar app_packing_tool.jar --mode multiApp --hap-list 1.hap,2.hap --out-path final.app
作為一名合格一線開發程序員,大家心里肯定會有很多疑問!鴻蒙系統這么強大~~
為了能夠讓大家跟上互聯網時代的技術迭代,在這里跟大家分享一下我自己近期學習心得以及參考網上資料整理出的一份最新版的鴻蒙學習提升資料,有需要的小伙伴自行領取,限時開源,先到先得~~~~
領取以下高清學習路線原圖請點擊→《鴻蒙 (Harmony OS)開發學習手冊》純血鴻蒙HarmonyOS基礎技能學習路線圖
領取以上完整高清學習路線圖,請點擊→《鴻蒙基礎入門學習指南》小編自己整理的部分學習資料(包含有高清視頻、開發文檔、電子書籍等)
以上分享的學習路線都適合哪些人跟著學習?
-應屆生/計算機專業
通過學習鴻蒙新興技術,入行互聯網,未來高起點就業。
-0基礎轉行
提前布局新方向,抓住風口,自我提升,獲得更多就業機會。
-技術提升/進階跳槽
發展瓶頸期,提升職場競爭力,快速掌握鴻蒙技術,享受藍海紅利
總結
如果你覺得這篇內容對你有幫助,我想麻煩大家動動小手給我:點贊,轉發,有你們的 『點贊和評論』,才是我創造的動力。
關注我,同時可以期待后續文章ing,不定期分享原創知識。
想要獲取更多完整鴻蒙最新VIP學習資料,請點擊→《鴻蒙全套學習指南》