HarmonyOS—編譯構建概述

編譯構建是將應用/服務的源代碼、資源、第三方庫等,通過編譯工具轉換為可直接在硬件設備上運行的二進制機器碼,然后再將二進制機器碼封裝為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學習資料,請點擊→《鴻蒙全套學習指南》

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

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

相關文章

牛皮癬發作和復發的觸發因素

谷禾健康 銀屑病,又叫牛皮癬,會導致出現皮疹伴發癢的鱗狀斑塊,最常見于膝蓋、肘部、軀干和頭皮。通常呈周期性發展,發作數周或數月,然后消退一段時間,長期的發作和復發會給患者帶來很大的痛苦和困擾&#x…

Qt5.9.9交叉編譯(帶sqlite3、OpenSSL)

1、交叉編譯工具鏈 這里ARM平臺是ARM CortexA9的,一般交叉編譯工具鏈demo板廠商都會提供,若未提供或想更換新版本的交叉編譯工具鏈可參考以下方式獲取。 1.1 下載適用于ARM CortexA9的交叉編譯工具鏈 Linaro Releases下載gcc4的最新版xxxx-i686_arm-li…

洛谷P1009階乘之和

題目描述 用高精度計算出S1!2!3!?n!(n≤50)。 其中 ! 表示階乘,定義為 n!n(n?1)(n?2)?1。例如,5!543211205!54321120。 輸入格式 一個正整數 n。 輸出格式 一個正整數 S,表示計算結果。 輸入輸出樣例 輸入…

2024/3/1 貪心

跳跳 跳跳&#xff01; - 洛谷 思路&#xff1a;從一個數組里面依次取出最大值和最小值&#xff0c;然后進行運算 完整代碼&#xff1a; #include <bits/stdc.h> #define int long long #define PII std::pair<int,int> signed main() {int n;std::cin >>…

接口文檔-示例

接口文檔-示例 1 根據ID查詢員工 1.1 基本信息 請求路徑&#xff1a;/emp 請求方式&#xff1a;GET 接口描述&#xff1a;該接口用于根據ID查詢員工信息 1.2 請求參數 參數說明&#xff1a; 參數名類型是否必須備注idnumber必須員工ID 請求樣例&#xff1a; GET http://l…

string【基礎篇】

1.1string字符串類 注意&#xff1a;這個類獨立于所使用的編碼來處理字節:如果用來處理多字節或變長字符(如UTF-8)的序列&#xff0c;這個 類的所有成員(如長度或大小)以及它的迭代器&#xff0c;將仍然按照字節(而不是實際編碼的字符)來操作。 總結&#xff1a; string是表…

設計模式系列文章-7個創建型模式更新已完結

其實從2019年開始就有些一套關于設計模式的系列文章&#xff0c;但是因為種種原因一直擱置到現在。直到2024年才又恢復更新。 24年1月份上旬一直在弄博客站&#xff1a;https://jaune162.blog 的搭建 24年1月份下旬弄專題站&#xff1a;https://books.jaune162.blog 的搭建。…

「優選算法刷題」:二進制求和

一、題目 給你兩個二進制字符串 a 和 b &#xff0c;以二進制字符串的形式返回它們的和。 示例 1&#xff1a; 輸入:a "11", b "1" 輸出&#xff1a;"100" 示例 2&#xff1a; 輸入&#xff1a;a "1010", b "1011" …

Qt應用軟件【測試篇】vargrid內存檢查工具

文章目錄 vargrid介紹vargrid官網vargrid安裝常用命令Valgrind的主要命令vargrid介紹 Valgrind是一個用于構建動態分析工具的框架,能自動檢測許多內存管理和線程錯誤,并詳細分析程序性能。Valgrind發行版包括七個成熟工具:內存錯誤檢測器、兩個線程錯誤檢測器、緩存和分支預…

Java8 - LocalDateTime時間日期類使用詳解

&#x1f3f7;?個人主頁&#xff1a;牽著貓散步的鼠鼠 &#x1f3f7;?系列專欄&#xff1a;Java全棧-專欄 &#x1f3f7;?個人學習筆記&#xff0c;若有缺誤&#xff0c;歡迎評論區指正 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&…

redis+定時 模擬滑動窗口實現熔斷降級

業務背景 公司業務現用的通道為 A、B&#xff0c;為了降本&#xff0c;引入新的支付通道 Y&#xff0c;但 Y 通道的穩定性要低于 A、B&#xff0c;系統要能在 Y 通道故障時自動切回到 A、B&#xff0c;等 Y 恢復正常后&#xff0c;再切換到 Y。 乍一看很簡單&#xff0c;不就是…

使用鏈表和數組輸出A~Z的ASCII碼

輸出結果 26個字母以及其對應的ASCII碼 一、使用鏈表創建&#xff0c;注意&#xff1a; 節點需要有next指針初始化時head需要new一下 cur指針代表當前指針&#xff0c;每次不斷的New新的節點&#xff0c;pre指針代表當前指針的前一個指針&#xff0c;每次pre的next指針指向cur…

sql注入攻擊 - cookie注入

環境準備:構建完善的安全滲透測試環境:推薦工具、資源和下載鏈接_滲透測試靶機下載-CSDN博客 一、Cookie 知識介紹 Cookie(HTTP Cookie)是服務器發送到用戶瀏覽器并保存在本地的一小段數據,用于記錄用戶的相關信息和狀態。這些信息通常包括用戶的身份標識、網站偏好設置…

3.1日學習打卡----初學FastDFS(一)

3.1日學習打卡 目錄: 3.1日學習打卡一. 為什么要使用分布式文件系統二. FastDFS簡介核心概念上傳機制下載機制FastDFS環境搭建_LinuxFastDFS指令 一. 為什么要使用分布式文件系統 單機時代 初創時期由于時間緊迫&#xff0c;在各種資源有限的情況下&#xff0c;通常就直接在項…

二分+質因數分解,LightOJ 1138Trailing Zeroes (III)

一、題目 1、題目描述 You task is to find minimal natural number N, so that N! contains exactly Q zeroes on the trail in decimal notation. As you know N! 1 * 2 * ... * N. For example, 5! 120, 120 contains one zero on the trail. 2、輸入輸出 2.1輸入 Input…

HTML---Ajax

文章目錄 目錄 文章目錄 前言 一.Ajax概述 二.原生創建Ajax 三,使用Jquery處理Ajax 總結 一.Ajax概述 AJAX&#xff08;Asynchronous Javascript And XML&#xff09;是一種創建交互式網頁應用的網頁開發技術。它使用Javascript語言與服務器進行異步交互&#xff0c;可以傳…

【計算機網絡】五種IO模型與IO多路轉接之select

文章目錄 一、五種IO模型二、非阻塞IO1.fcntl2.實現函數SetNoBlock3.輪詢方式讀取標準輸入 三、I/O多路轉接之select1.初識select2.select函數原型3.socket就緒條件4.select的特點5.select缺點6.select使用案例--只讀取數據的server服務器1.err.hpp2.log.hpp3.sock.hpp4.select…

DBGridEh 的排序

DBGridEh 可以點列抬頭使得記錄按該列排序 不需要寫代碼&#xff0c;只需要設置好&#xff0c;它就能排序。 網上的文章一般寫了如何設置。但一般都少說了一條。 先說如何設置&#xff1a; 1. OptionsEh.AutoSortMarking 設置為 True&#xff0c;如果是設計期屬性面板&…

Linux上搭建并使用ffmpeg(Java)

關于MacOs和Windows系統上使用ffmpeg就不多說了&#xff0c;有很多相關文章&#xff0c;今天給大家分享一個在Linux環境下使用Java語言來使用ffmpeg 一、首先去官網下載一個Linux對應的ffmpeg包 1、進入ffmpeg官網&#xff1a;官網 2、點擊左側導航欄Download 3、選擇Linux對…

如何利用graylog進行容器化日志管理?

Docker日志 當一個容器啟動的時候&#xff0c;它其實是docker deamon的一個子進程&#xff0c;docker daemon可以拿到容器里面進程的標準輸出&#xff0c;然后通過自身的LogDriver模塊來處理&#xff0c;LogDriver支持的方式很多&#xff0c;默認寫到本地文件&#xff0c;也可…