OpenHarmony編譯構建系統詳解,從零搭建windows下開發環境,巨方便!


自從OpenHarmony更新了dev-tool,就可以在windows下構建鴻蒙(輕量型)系統了,這對於進行MCU開發的朋友們,學習鴻蒙OS會友好許多!我們可以更快的構建出系統,方便快速學習和驗證。不過關於這個開發環境搭建的文章,網上比較少,而且坑也很多。所以這篇文章,我就帶大家從零完成dev-tool的環境搭建,幫大家降低學習OpenHarmony的學習成本!

我們先講一下OpenHarmony的編譯構建框架,當大家理解了這個框架后,再學習環境的搭建和工程開發,心里會有底氣許多。

一、穿針引線-編譯構建

OpenHarmony的編譯構建子系統,基於GN和Ninja搭。GN是一種元構建系統,可以生成Ninja構建文件(Ninja build files),最早應用於Chromium項目,目的是取代GNU-Make。相比之下,這種構建方式有幾個優勢:

  • 可讀性更好,更容易編寫和維護。
  • 速度更快,谷歌官方給的數據是20倍的速度提升。
  • 修改GN文件后,執行Ninja構建時會自動更新Ninja構建文件。
  • 更好的調試支持。在GN中,只需要一條print語句就可以解決。

1. 運作機制

這個編譯構建框架,將OpenHarmony的平台、子系統、組件“穿針引線”地組織起來。如果把GN比喻成“針線”,把生成的Ninja文件比喻成“衣服”的“設計圖紙”,那么整個編譯構建的過程,就是依靠“針線”和“設計圖紙”,把“衣服”完整地做出來的。

其中平台決定了整個“衣服”的材質,有基於ARM的,也有基於Risc-V的;子系統代表了衣服的樣式和結構,有夏天穿的,比較輕薄(輕量型系統),有春秋穿的,比較適中(小型系統),有冬天穿的,非常暖和(全量型系統);而組件是子系統的基本構成單位,決定子系統具體的實現細節。

整個編譯的運作機制並不復雜,可以總結為:以命令行為驅動,調用gn,執行ninja。命令行主要做解析方面的工作,解析待編譯的產品名稱,加載相關配置(完成“衣服”的材質選擇);調用gn是為了根據命令行解析的產品名稱和編譯類型,配置編譯工具鏈和全局的編譯選項(准備“衣服”的設計圖紙);最后執行Ninja,以啟動編譯並生成對應的產品版本(“穿針引線”,完成衣服的編織)。

在最新的2.0版本,除了一部分組件仍保持make從構建方式,其他已經完全替換成GN和Ninja的構建方式。預計后面的版本,會完成全量的替換。

2. 構建流程

編譯構建流程如圖所示,主要分設置和編譯兩步,可以參考下文理解:
圖源自WeHarmony
解釋一下命令的作用,”hb set“: 設置OpenHarmony源碼目錄和要編譯的產品;”hb build“: 編譯產品、開發板或者組件。

編譯主要過程如下:

名稱 過程
讀取編譯配置 根據產品選擇的開發板,讀取開發板config.gni文件內容,主要包括編譯工具鏈、編譯鏈接命令和選項等
調用gn gen命令 讀取產品配置生成產品解決方案out目錄和ninja文件
調用ninja -C out/board/product啟動編譯
系統鏡像打包 將組件編譯產物打包,設置文件屬性和權限,制作文件系統鏡像

這里可以訪問:http://weharmonyos.com/openharmony/zh-cn/device-dev/subsystems,在編譯構建章節了解更多內容,這里不過多贅述。

二、施展拳腳-環境搭建

1. 系統環境准備

OpenHarmony的編譯工具鏈,目前以GNU為主,類型是gnu-arm-gcc和gnu-risc-v-gcc。最開始應用這些工具鏈是在ubuntu環境下,同時整個系統的構建也依賴了linux的GNU環境。我們想要在Windows下面成功運行這些工具鏈,除了下載對應的window版本的工具鏈,還需要准備好GNU環境。

除了編譯工具鏈,環境搭建還依賴Python來完成各種編譯文件的組織(輔助GN和Ninja),通過Node.js提供npm環境,需要hpm提供包管理。完成以上准備,就可以安裝VsCode(dev-tool的載體,其通過插件的方式在vscode上面運行)了,之后再安裝dev-tool即可。
下面給出具體的清單:

工具名稱 用途說明 版本要求 獲取渠道
Python 編譯構建工具 V3.7.4~V3.8.x 64位版本 https://www.python.org/downloads/
Node.js 提供npm環境 v12.0.0及以上 64位版本 https://nodejs.org/zh-cn/download/
hpm 包管理工具 最新版 npm install -g @ohos/hpm-cli
Visual Studio Code 代碼編輯工具 V1.53及以上 64位版本。 https://code.visualstudio.com/Download
DevEco Device Tool OpenHarmony源碼的編譯、燒錄、調試插件工具 v2.2 Beta1 https://device.harmonyos.com/cn/ide#download下載前,請使用華為開發者帳號登錄,如未注冊,請先注冊華為開發者帳號。

2. 搭建系統環境

說明一下,在完成下面步驟時,遇到的所有問題,都可以訪問:http://weharmonyos.com/openharmony/zh-cn/device-dev/quick-start/,選擇常見問題章節,來解決。

1)安裝Visual Studio Code

說明: 如果已安裝Visual Studio Code,打開命令行工具,輸入code --version命令,檢查版本號是否為1.53及以上版本;可以正常返回版本號,說明環境變量設置也正確。

雙擊Visual Studio Code軟件包進行安裝。安裝過程中,請勾選“添加到PATH(重啟后生效)”。

安裝完成后,打開命令行工具,輸入code --version命令,可以正常顯示版本號說明安裝成功。

2)安裝Python

雙擊Python安裝包進行安裝,勾選“Add Python 3.8 to PATH”,然后點擊Install Now開始安裝。

等待安裝完成后,點擊Close。

打開命令行工具,輸入python --version,檢查安裝結果。

注意:如果安裝了多個版本的Python,要保證這個版本的,優先級最高。具體命令可自行百度。

在命令行工具中,分別執行如下命令設置pip源,用於后續安裝DevEco Device Tool過程中下載依賴的組件包。

pip config set global.trusted-host repo.huaweicloud.com
pip config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple
pip config set global.timeout 120

3)安裝Node.js

說明: 如果已安裝Node.js,打開命令行工具,輸入node -v命令,檢查版本號是否為12.0.0及以上版本。

點擊下載后的軟件包進行安裝,全部按照默認設置點擊Next,直至Finish。安裝過程中,Node.js會自動在系統的path環境變量中配置node.exe的目錄路徑。
重新打開命令行工具,輸入“node -v“命令,能正常查詢Node.js的版本號,說明Node.js安裝成功。

4)安裝hpm

該方式需先確保Node.js安裝成功。

在安裝hpm前,請檢查網絡連接狀態,如果網絡不能直接訪問Internet,則需要通過代理服務器才可以訪問。這種情況下,需要先設置npm代理,才能安裝hpm。

說明: 如果已安裝hpm,可以執行npm update -g @ohos/hpm-cli命令升級hpm至最新版本。

  1. 建議將npm源配置為國內鏡像,例如設置為華為雲鏡像源。
npm config set registry https://repo.huaweicloud.com/repository/npm/
  1. 打開命令行工具,執行如下命令安裝最新版本hpm。
npm install -g @ohos/hpm-cli

  1. 安裝完成后,執行如下命令(V為大寫字母)檢查hpm安裝結果。
hpm -V

5)安裝DevEco Device Tool插件

安裝DevEco Device Tool插件,主機的用戶名不能包含中文字符,否則可能導致運行出現錯誤。

DevEco Device Tool正常運行需要依賴於C/C++和CodeLLDB插件,在安裝完DevEco Device Tool后,會自動從Visual Studio Code的插件市場安裝C/C++和CodeLLDB插件。因此,在安裝DevEco Device Tool前,請檢查Visual Studio Code的網絡連接狀態,如果網絡不能直接訪問Internet,則需要通過代理服務器才可以訪問,請先Visual Studio Code代理設置。

說明: 安裝DevEco Device Tool時,請先關閉Visual Studio Code。

  1. 解壓DevEco Device Tool插件壓縮包,雙擊安裝包程序進行安裝。

  2. 安裝過程中,會自動安裝DevEco Device Tool所需的依賴文件(如C/C++和CodeLLDB插件)和執行程序。

  3. 安裝完成后,會自動關閉命令行工具窗口(第一次按照時間會比較久,耐心等待,如果失敗了,需要清理C盤的緩存文件,重新安裝)。

啟動Visual Studio Code,點擊左側的按鈕,檢查INSTALLED中,是否已成功安裝C/C++、CodeLLDB和DevEco Device Tool。

說明: 如果C/C++和CodeLLDB插件安裝不成功,則DevEco Device Tool不能正常運行,解決方法,詳細請參考:離線安裝C/C++和CodeLLDB插件。

三、大展身手-工程編譯

1. 開發板環境准備

DevEco Device Tool當前支持Hi3861V100的源碼在windows下的一鍵編譯能力;如果涉及其它開發板的源碼編譯,請參考Ubuntu平台源碼編譯。可以訪問官網開發者文檔:https://device.harmonyos.com/cn/docs/ide/user-guides/

我們需要再准備好Hi3861依托於OpenHarmony的編譯環境,也就是輕量型系統的編譯環境。並且下載好專門的源代碼。

2. 下載源碼

  1. 獲取適用於Hi3861V100開發板的源碼,請復制鏈接下載Windows平台源碼,選擇“全量代碼(標准系統)”(Windows平台源碼只能通過該鏈接獲取)。

連接地址:https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/源碼獲取.md#section1186691118430

  1. 解壓源碼包。
  2. 請根據打開工程/源碼指導,打開源碼。請注意,在設置Framework時,請選擇“Hb“。

1)設置編譯工具鏈

Hi3861V100支持Windows平台的編譯,需要開發者通過如下工具鏈接手動下載,然后在Tools中設置對應的工具鏈,包括:

工具包名稱 獲取地址 在Tools中設置的路徑
ninja https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/windows/ninja-win.zip ninja.exe所在文件夾
gn https://repo.huaweicloud.com/harmonyos/compiler/gn/1744/windows/gn-windows-amd64.zip gn.exe所在文件夾
gcc_riscv32 http://www.hihope.org/download/download.aspx?mtt=34 hcc_riscv32_win文件夾
tool_msys https://sourceforge.net/projects/mingw/ msys\bin文件夾
tool_scons DevEco Device Tool自帶工具 -

注意:這里非常關鍵的一點,在Tools里設置的工具鏈名稱,必須和上表給出的名稱一一對應!!!必須一摸一樣!這個問題是因為目前dev-tool還不夠完善導致的,一定要特別注意!!

同時,有一些工具包不好下載(在國外),所以我放在了我Gitee倉庫上,下載鏈接:https://gitee.com/zeweni/harmony-os-win-build,記得幫我點個Star呦~

2)編譯源碼

  1. 在Projects中,點擊工程的Settings按鈕,在hi3861V100配置頁簽中,設置源碼的編譯類型build_type,默認為“release“類型,請根據需要進行修改。然后點擊Save按鈕進行保存。


2. 保存后,點擊Open打開Hi3861V100的工程。
3. 點擊在這里插入圖片描述
圖標,打開DevEco Device Tool界面,在“PROJECT TASKS”中,點擊對應開發板下的Build按鈕,執行編譯。


4. 等待編譯完成,在TERMINAL窗口輸出“SUCCESS”,編譯完成。

到此為止,我們就完成了在windows上面搭建一站式的開發環境的全部流程!目前僅支持輕量型系統,開發板是Hi3861,后期會不斷添加其他的開發板。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM