參考文章:
《鴻蒙2.0都來(lái)了,快搭個(gè)環(huán)境玩起來(lái)吧!》
一、前言
前一段時(shí)間,我寫(xiě)過(guò)一篇關(guān)于LiteOS-A開(kāi)發(fā)環(huán)境搭建的文章(實(shí)際上是將其作為獨(dú)立的RTOS來(lái)開(kāi)發(fā)的),今天正式講一講LiteOS作為鴻蒙內(nèi)核子系統(tǒng)該如何開(kāi)發(fā)。
對(duì)于HarmonyOS,開(kāi)發(fā)工作大致可以分為南向開(kāi)發(fā)(內(nèi)核、驅(qū)動(dòng))和北向開(kāi)發(fā)(App應(yīng)用)。我們主講南向開(kāi)發(fā)。在目前的鴻蒙2.0版本下,南向輕內(nèi)核開(kāi)發(fā)的資料相對(duì)更加完善,主要是針對(duì)LiteOS內(nèi)核。講到這里,能完整編譯到手機(jī)上運(yùn)行的鴻蒙鏡像,可能大家還要再等一等了(筆者也很期待)。
二、概述
為了幫大家理清楚鴻蒙開(kāi)發(fā)的套路,我們從頭再梳理一遍相關(guān)的脈絡(luò)。并為大家總結(jié)一些重點(diǎn)性的內(nèi)容。在介紹OpenHarmony特性前,需要大家先明確以下兩個(gè)基本概念:
子系統(tǒng)
OpenHarmony整體遵從分層設(shè)計(jì),從下向上依次為:內(nèi)核層、系統(tǒng)服務(wù)層、框架層和應(yīng)用層。系統(tǒng)功能按照“系統(tǒng) > 子系統(tǒng) > 組件”逐級(jí)展開(kāi)。子系統(tǒng)是一個(gè)邏輯概念,它具體由對(duì)應(yīng)的組件構(gòu)成。我們這一系列文章主講的南向輕內(nèi)核開(kāi)發(fā),就屬于內(nèi)核子系統(tǒng)的開(kāi)發(fā)。
組件
對(duì)子系統(tǒng)的進(jìn)一步拆分,可復(fù)用的軟件單元,它包含源碼、配置文件、資源文件和編譯腳本;能獨(dú)立構(gòu)建,以二進(jìn)制方式集成,具備獨(dú)立驗(yàn)證能力的二進(jìn)制單元。
1. 整體介紹
OpenHarmony是由開(kāi)放原子開(kāi)源基金會(huì)(OpenAtom Foundation)孵化及運(yùn)營(yíng)的開(kāi)源項(xiàng)目,目標(biāo)是面向全場(chǎng)景、全連接、全智能時(shí)代,基于開(kāi)源的方式,搭建一個(gè)智能終端設(shè)備操作系統(tǒng)的框架和平臺(tái),促進(jìn)萬(wàn)物互聯(lián)產(chǎn)業(yè)的繁榮發(fā)展。
重點(diǎn)一:開(kāi)放原子開(kāi)源基金會(huì)是由國(guó)家主導(dǎo)的。
2. 技術(shù)架構(gòu)
OpenHarmony整體遵從分層設(shè)計(jì),從下向上依次為:內(nèi)核層、系統(tǒng)服務(wù)層、框架層和應(yīng)用層。系統(tǒng)功能按照“系統(tǒng) > 子系統(tǒng) > 組件”逐級(jí)展開(kāi),在多設(shè)備部署場(chǎng)景下,支持根據(jù)實(shí)際需求裁剪某些非必要的組件。OpenHarmony技術(shù)架構(gòu)如下所示:
在這里插入圖片描述
重點(diǎn)二:可裁剪,靈活性高,適應(yīng)碎片化復(fù)雜化的物聯(lián)網(wǎng)場(chǎng)景。
1) 內(nèi)核層
內(nèi)核子系統(tǒng):采用多內(nèi)核(Linux內(nèi)核或者LiteOS)設(shè)計(jì),支持針對(duì)不同資源受限設(shè)備選用適合的OS內(nèi)核。內(nèi)核抽象層(KAL,Kernel Abstract Layer)通過(guò)屏蔽多內(nèi)核差異,對(duì)上層提供基礎(chǔ)的內(nèi)核能力,包括進(jìn)程/線程管理、內(nèi)存管理、文件系統(tǒng)、網(wǎng)絡(luò)管理和外設(shè)管理等。
驅(qū)動(dòng)子系統(tǒng):驅(qū)動(dòng)框架(HDF)是系統(tǒng)硬件生態(tài)開(kāi)放的基礎(chǔ),提供統(tǒng)一外設(shè)訪問(wèn)能力和驅(qū)動(dòng)開(kāi)發(fā)、管理框架。
重點(diǎn)三:內(nèi)核多樣化,適配不同資源的硬件平臺(tái),HDF框架,提供統(tǒng)一的生態(tài)接口。
系統(tǒng)服務(wù)層
系統(tǒng)服務(wù)層是OpenHarmony的核心能力集合,通過(guò)框架層對(duì)應(yīng)用程序提供服務(wù)。該層包含以下幾個(gè)部分:
系統(tǒng)基本能力子系統(tǒng)集:為分布式應(yīng)用在多設(shè)備上的運(yùn)行、調(diào)度、遷移等操作提供了基礎(chǔ)能力,由分布式軟總線、分布式數(shù)據(jù)管理、分布式任務(wù)調(diào)度、公共基礎(chǔ)庫(kù)、多模輸入、圖形、安全、AI等子系統(tǒng)組成。
基礎(chǔ)軟件服務(wù)子系統(tǒng)集:提供公共的、通用的軟件服務(wù),由事件通知、電話、多媒體、DFX(Design For X) 等子系統(tǒng)組成。
增強(qiáng)軟件服務(wù)子系統(tǒng)集:提供針對(duì)不同設(shè)備的、差異化的能力增強(qiáng)型軟件服務(wù),由智慧屏專有業(yè)務(wù)、穿戴專有業(yè)務(wù)、IoT專有業(yè)務(wù)等子系統(tǒng)組成。
硬件服務(wù)子系統(tǒng)集:提供硬件服務(wù),由位置服務(wù)、生物特征識(shí)別、穿戴專有硬件服務(wù)、IoT專有硬件服務(wù)等子系統(tǒng)組成。
根據(jù)不同設(shè)備形態(tài)的部署環(huán)境,基礎(chǔ)軟件服務(wù)子系統(tǒng)集、增強(qiáng)軟件服務(wù)子系統(tǒng)集、硬件服務(wù)子系統(tǒng)集內(nèi)部可以按子系統(tǒng)粒度裁剪,每個(gè)子系統(tǒng)內(nèi)部又可以按功能粒度裁剪。
重點(diǎn)四:深入細(xì)分到功能粒度級(jí)的可裁剪性。
2) 框架層
框架層為應(yīng)用開(kāi)發(fā)提供了C/C++/JS等多語(yǔ)言的用戶程序框架和Ability框架,適用于JS語(yǔ)言的JS UI框架,以及各種軟硬件服務(wù)對(duì)外開(kāi)放的多語(yǔ)言框架API。根據(jù)系統(tǒng)的組件化裁剪程度,設(shè)備支持的API也會(huì)有所不同。
重點(diǎn)五:多語(yǔ)言框架、Ability框架、UI框架的豐富框架。
3) 應(yīng)用層
應(yīng)用層包括系統(tǒng)應(yīng)用和第三方非系統(tǒng)應(yīng)用。應(yīng)用由一個(gè)或多個(gè)FA(Feature Ability)或PA(Particle Ability)組成。其中,F(xiàn)A有UI界面,提供與用戶交互的能力;而PA無(wú)UI界面,提供后臺(tái)運(yùn)行任務(wù)的能力以及統(tǒng)一的數(shù)據(jù)訪問(wèn)抽象?;贔A/PA開(kāi)發(fā)的應(yīng)用,能夠?qū)崿F(xiàn)特定的業(yè)務(wù)功能,支持跨設(shè)備調(diào)度與分發(fā),為用戶提供一致、高效的應(yīng)用體驗(yàn)。
重點(diǎn)六:FA和PA對(duì)應(yīng)用進(jìn)行抽象和歸類,以提供跨設(shè)備調(diào)度與分發(fā)的能力。
4) 技術(shù)特性
總結(jié)起來(lái),主要有以下特點(diǎn):
- 硬件互助,資源共享
- 一次開(kāi)發(fā),多端部署
- 統(tǒng)一OS,彈性部署
那么實(shí)現(xiàn)出來(lái)的效果,就和鴻蒙2.0發(fā)布會(huì)上面展現(xiàn)的差不多:更低的延時(shí)、終端更智能化且更加貼合自身的場(chǎng)景、每個(gè)設(shè)備的自身優(yōu)勢(shì)被無(wú)限放大、數(shù)據(jù)的可流轉(zhuǎn)性。
3. 系統(tǒng)特征
OpenHarmony支持如下幾種系統(tǒng)類型:
1) 輕量系統(tǒng)(mini system)
面向MCU類處理器例如Arm Cortex-M、RISC-V 32位的設(shè)備,硬件資源極其有限,支持的設(shè)備最小內(nèi)存為128KiB,可以提供多種輕量級(jí)網(wǎng)絡(luò)協(xié)議,輕量級(jí)的圖形框架,以及豐富的IOT總線讀寫(xiě)部件等。可支撐的產(chǎn)品如智能家居領(lǐng)域的連接類模組、傳感器設(shè)備、穿戴類設(shè)備等。
2) 小型系統(tǒng)(small system)
面向應(yīng)用處理器例如Arm Cortex-A的設(shè)備,支持的設(shè)備最小內(nèi)存為1MiB,可以提供更高的安全能力、標(biāo)準(zhǔn)的圖形框架、視頻編解碼的多媒體能力??芍蔚漠a(chǎn)品如智能家居領(lǐng)域的IP Camera、電子貓眼、路由器以及智慧出行域的行車(chē)記錄儀等。
3) 標(biāo)準(zhǔn)系統(tǒng)(standard system)
面向應(yīng)用處理器例如Arm Cortex-A的設(shè)備,支持的設(shè)備最小內(nèi)存為128MiB,可以提供增強(qiáng)的交互能力、3D GPU以及硬件合成能力、更多控件以及動(dòng)效更豐富的圖形能力、完整的應(yīng)用框架??芍蔚漠a(chǎn)品如高端的冰箱顯示屏。
小結(jié)
目前鴻蒙OS的代碼倉(cāng)庫(kù)主要發(fā)布在gitee上的開(kāi)放原子開(kāi)源基金會(huì)中。其他平臺(tái)的代碼,是作為分發(fā)編譯源碼使用的,比如hpm倉(cāng)庫(kù),下文我們將詳細(xì)講述。
你可以點(diǎn)擊下面的鏈接,跳轉(zhuǎn)到鴻蒙的代碼倉(cāng)庫(kù),閱讀核心源代碼。
開(kāi)放原子開(kāi)源基金會(huì)Gitee倉(cāng)庫(kù)
https://gitee.com/openharmony
三、搭建開(kāi)發(fā)環(huán)境
對(duì)于LiteOS內(nèi)核開(kāi)發(fā),官方給出了非常詳細(xì)的教程,但是內(nèi)容很多,且平臺(tái)復(fù)雜,工具鏈較長(zhǎng)。在這里我會(huì)為大家做一下梳理,然后提供每一種開(kāi)發(fā)環(huán)境的官方教程鏈接,同時(shí)提供完整的編譯鏈工具下載地址。在最后,我會(huì)采用小熊派·鴻蒙季開(kāi)發(fā)板,搭建一個(gè)完整的開(kāi)發(fā)環(huán)境,供大家參考。
1. 源碼獲取
一共有三種方法,我簡(jiǎn)要列出來(lái)給大家看看。你可以通過(guò)下面的小結(jié),跳轉(zhuǎn)到官方給出的教程,進(jìn)行詳細(xì)閱讀。
1) 鏡像站下載
從鏡像站點(diǎn)下載歸檔后的發(fā)行版壓縮文件。如果要獲取舊版本的源碼,也可通過(guò)此方式獲取。
示例:LTS版本源碼 -Hi3861(二進(jìn)制 )
https://repo.huaweicloud.com/harmonyos/os/1.1.0/ipcamera_hi3518ev300-1.1.0.tar.gz
示例:編譯工具鏈https://repo.huaweicloud.com/harmonyos/os/2.0/tool_chain/
2) HPM包拉取
通過(guò)HPM包管理器獲取。在HPM網(wǎng)站,查找滿足需求的開(kāi)源發(fā)行版,直接下載(或者定制后下載),再通過(guò)hpm-cli命令工具將所需的組件及工具鏈下載、安裝到本地。
需要安裝的工具有:
工具名稱用途Node.js提供前置環(huán)境hpm獲取源碼的工具
下文將采用小熊派開(kāi)發(fā)板來(lái)具體演示HPM包管理器獲取源碼,這里暫且不表。
3) 代碼倉(cāng)庫(kù)克隆
從代碼倉(cāng)庫(kù)獲取。通過(guò)repo或git工具從代碼倉(cāng)庫(kù)中下載。
首先注冊(cè)碼云gitee賬號(hào)。再注冊(cè)碼云SSH公鑰,請(qǐng)參考碼云幫助中心。https://gitee.com/help/articles/4181
安裝git客戶端和git-lfs并配置用戶信息。
git config --global user.name "yourname"git config --global user.email "your-email-address"git config --global credential.helper store
安裝碼云repo工具,可以執(zhí)行如下命令。
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repochmod a+x /usr/local/bin/repopip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
4)小結(jié)
關(guān)于獲取鴻蒙源碼,為了便于后續(xù)開(kāi)發(fā),選擇一種適合自己的方法最好。
三種獲取源碼的官方教程鏈接https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/%E6%BA%90%E7%A0%81%E8%8E%B7%E5%8F%96.md
2. 工具鏈獲取
官方提供了兩個(gè)開(kāi)發(fā)環(huán)境,兩個(gè)開(kāi)發(fā)工具。開(kāi)發(fā)環(huán)境主要指:基于HPM的Docker環(huán)境和獨(dú)立的Docker環(huán)境;開(kāi)發(fā)工具主要指:設(shè)備開(kāi)發(fā)工具(南向)和應(yīng)用開(kāi)發(fā)工具(北向)。
基于HPM的Docker環(huán)境:適用于使用HPM工具進(jìn)行發(fā)行版編譯的場(chǎng)景。
基于獨(dú)立Docker環(huán)境:適用于直接基于Ubuntu、Windows操作系統(tǒng)平臺(tái)進(jìn)行版本編譯的場(chǎng)景。
設(shè)備開(kāi)發(fā)工具(HUAWEI DevEco Device Tool),支持linux 和windows
點(diǎn)擊我跳轉(zhuǎn)獲取工具鏈的詳細(xì)教程
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/%E8%8E%B7%E5%8F%96%E5%B7%A5%E5%85%B7.md#section2452141120244
除了官方介紹的,也可以自行搭建開(kāi)發(fā)環(huán)境,具體需要安裝如下工具:
Linux部分:
Ubuntu16.04及以上64位系統(tǒng)版本,Shell使用bash
開(kāi)發(fā)工具用途gcc_riscv32交叉編譯工具Python3.7+(64 bit)編譯構(gòu)建工具SCons3.0.4+編譯構(gòu)建工具bash命令處理器build-essential編譯依賴的基礎(chǔ)軟件包gn產(chǎn)生ninja編譯腳本ninja執(zhí)行ninja編譯腳本Visual Studio Code(可選)代碼編輯器
其中 gn 和ninja 由于在國(guó)外,比較難安裝,可能需要翻墻。
Windows部分
64位Windows工作臺(tái)(主機(jī)電腦)
開(kāi)發(fā)工具用途Visual Studio Code(可選)代碼編輯器MobaXterm、PuTTY(可替換)提供SSH鏈接和串口連接Hiburn代碼燒錄工具VMware(可選)虛擬機(jī)
但是大家放心,我已經(jīng)將所有的工具鏈都打包好了,可以直接下載,后臺(tái)回復(fù)鴻蒙OS
,即可獲得完整的工具包,其中我提供的linux鏡像包含完整的工具鏈,可以直接使用。
四、Demo演示
1. 部署Linux環(huán)境
1.解壓百度云下載的HarmonyOSUbuntu18.4鏡像OVF.zip文件到某個(gè)目錄,建議不要放到在C盤(pán)。
2.打開(kāi)VMware Workstation工具
3.選擇第1步解壓的Ubuntu18.4鏡像OVF文件夾中,點(diǎn)擊打開(kāi)
4.導(dǎo)入鏡像到本地磁盤(pán)(選擇一個(gè)磁盤(pán)空間大小≥ 10G的盤(pán)),點(diǎn)擊導(dǎo)入。
5.點(diǎn)擊開(kāi)啟此虛擬機(jī),來(lái)開(kāi)啟虛擬機(jī)電源
6.此時(shí)虛擬機(jī)進(jìn)入登錄界面,點(diǎn)擊HarmonyOS
7.輸入密碼:bearpi,然后點(diǎn)擊登錄
8.進(jìn)入桌面后,點(diǎn)擊桌面空白處右鍵,點(diǎn)擊打開(kāi)終端(E)
9.在終端中輸入ifconfig,然后點(diǎn)擊回車(chē),除lo外,另外一個(gè)就是你的網(wǎng)卡信息,記錄你獲取到的IP地址。
10.最小化VMware Workstation,回到Windows桌面上。
注意:如果連不上網(wǎng)絡(luò)(如果主機(jī)網(wǎng)絡(luò)需要撥號(hào),如校園網(wǎng)絡(luò)、ADSL撥號(hào)等)在VMware Workstation中,點(diǎn)擊虛擬機(jī)>> 設(shè)置
然后在網(wǎng)絡(luò)適配器中,改成NAT 模式,點(diǎn)擊確定
然后再回復(fù)步驟8。
2. 部署windows環(huán)境
1.打開(kāi)MobaXterm工具,并依次點(diǎn)擊:Session,SSH 按鈕。輸入連接信息,遠(yuǎn)程地址,并點(diǎn)擊OK
2.輸入賬號(hào):bearpi,點(diǎn)擊回車(chē)
3.輸入密碼:bearpi,注意,輸入密碼的時(shí)候屏幕不會(huì)顯示,輸完之后點(diǎn)擊回車(chē)
4.在彈出的界面上,點(diǎn)擊Yes保存賬號(hào)信息,以免下次輸入
3. 映射linux文件到window
這里可以使用VMWare自帶的虛擬磁盤(pán)映射服務(wù),也可以使用RaiDrive。
1.安裝RaiDrive軟件,默認(rèn)安裝即可
2.添加鏈接信息
SFTP://______ (這個(gè)輸入獲取到的IP地址),賬戶:賬號(hào)和密碼皆為 bearpi,其他默認(rèn),點(diǎn)擊確定
查看本地映射的ubuntu文件路徑
4. 獲取源碼
1.切換到MobaXterm
2.在MobaXterm中輸入以下內(nèi)容,并回車(chē):
cd /home/bearpi
3.在MobaXterm中輸入以下內(nèi)容,并回車(chē):
mkdir project && cd project
4.在MobaXterm中輸入以下內(nèi)容,并回車(chē):
hpm init -t default
5.在MobaXterm中輸入以下內(nèi)容,并回車(chē):
hpm i @bearpi/bearpi_hm_nano
等待1-3分鐘(根據(jù)不同網(wǎng)速),當(dāng)屏幕中出現(xiàn)Installed.意味著代碼獲取完成如果卡死不動(dòng)了,就ctrl+c 退出,重新輸入一遍并回車(chē)。
5. 編譯代碼
1.在MobaXterm中輸入以下內(nèi)容,并回車(chē):
hpm dist
等待直到屏幕出現(xiàn):BUILD SUCCESS字樣,說(shuō)明編譯成功。
2.查看編譯出的固件位置
當(dāng)編譯完后,在Windows中可以直接查看到最終編譯的固件,具體路徑在:
6. 連接開(kāi)發(fā)板
1.通過(guò)TypeC數(shù)據(jù)線,把電腦與BearPi-HM Nano連接。
2.安裝CH340驅(qū)動(dòng)。
下載地址:http://www.wch.cn/search?q=ch340g&t=downloads
一般電腦自帶CH340的驅(qū)動(dòng)。
3.關(guān)閉虛擬機(jī)捕獲USB功能。(有很多開(kāi)發(fā)者都是因?yàn)樘摂M機(jī)捕獲了USB設(shè)備,導(dǎo)致本機(jī)Windows電腦看不到串口)
如果上面操作不行,直接關(guān)閉VMware Workstation,選擇掛起,然后再重新插拔USB。
7. 燒錄程序
1.在Windows打開(kāi)Hiburn工具,并點(diǎn)擊Refresh,會(huì)檢索出來(lái)COM號(hào),如果你的電腦連接了多個(gè)串口,需要你在設(shè)備管理器中查看具體的串口號(hào)是哪一個(gè)。
2.然后點(diǎn)擊Setting,并選擇 Com settings,
在Com settings中設(shè)置Baud為:921600,點(diǎn)擊確定
3.點(diǎn)擊 Hiburn工具中的Select file按鈕,在彈出的文件框中,選擇對(duì)應(yīng)的路徑,并選中:Hi3861_wifiiot_app_allinone.bin 文件。
4.勾選Auto burn復(fù)選框,然后點(diǎn)擊Connect
此時(shí)Connect按鈕變成Disconnect,等待下載,這一步要有耐心,不要著急。
5.復(fù)位開(kāi)發(fā)板RESET按鍵,開(kāi)始下載程序
直到出現(xiàn)Execution Successful字樣,程序下載完成。
下載完后,點(diǎn)擊Disconnect按鈕,便于后面調(diào)測(cè)使用。
8. 查看串口打印日志
1.打開(kāi)MobaXterm,
點(diǎn)擊:Session、Serial按鈕;設(shè)置Seral port為 Hiburn 同一個(gè)串口;設(shè)置Speed為 115200;點(diǎn)擊OK。
2.如果顯示Unable to open...等字樣,需要看一下Hiburn的鏈接狀態(tài)是否為關(guān)閉。
3.復(fù)位開(kāi)發(fā)板,此時(shí)COM打印出對(duì)應(yīng)日志信息。
4.開(kāi)發(fā)板現(xiàn)象:
9. 分析代碼
1.在windows下打開(kāi)vscode
注意:看個(gè)人需要,再?zèng)Q定是否安裝官方提供的HUAWEI DevEco Device Tool,因?yàn)檫@個(gè)插件比較大,VsCode啟動(dòng)以后,要花一定的時(shí)間加載它。所以這里我沒(méi)有裝,只是把vscode當(dāng)作一個(gè)代碼編輯器。
2.我們看內(nèi)核啟動(dòng)后的第一個(gè)入口函數(shù)。
代碼路徑如下:
vendor\hisi\hi3861\hi3861\app\wifiiot_app\src\app_main.c
app_main函數(shù),首先會(huì)打SDK的版本號(hào),在完成外設(shè)的基本初始化,最后調(diào)用HOS_SystemInit函數(shù)進(jìn)行鴻蒙系統(tǒng)的初始化。
3.按下F12
跳轉(zhuǎn)到HOS_SystemInit函數(shù),具體代碼路徑如下:
base\startup\services\bootstrap_lite\source\system_init.c
同時(shí),這個(gè)函數(shù)是一個(gè)虛函數(shù),用戶可以根據(jù)自己需要來(lái)初始化鴻蒙系統(tǒng)。如果用戶不定義此函數(shù),那么將運(yùn)行系統(tǒng)默認(rèn)的函數(shù)(即原函數(shù)),原函數(shù)具體代碼和截圖如下:
void HOS_SystemInit(void){ MODULE_INIT(bsp); // 初始化BSP板極支持包 MODULE_INIT(device); // 初始化系統(tǒng)設(shè)備 MODULE_INIT(core); // 初始化系統(tǒng)核心 SYS_INIT(service); // 初始化系統(tǒng)服務(wù) SYS_INIT(feature); // 初始化系統(tǒng)特征段 MODULE_INIT(run); //調(diào)用所有 RUN段的代碼 SAMGR_Bootstrap();}
這個(gè)函數(shù),完成了系統(tǒng)的基本初始化,并指向我們業(yè)務(wù)邏輯代碼。
10. 小結(jié)
總的來(lái)說(shuō),構(gòu)建這樣一個(gè)環(huán)境,還是相對(duì)比較繁瑣的。但是鴻蒙能夠在短時(shí)間內(nèi)做到這種程度,是非常值得我們肯定的。
再補(bǔ)充一些東西:
1.鴻蒙使用Ninja來(lái)組織代碼進(jìn)行編譯,相比Makefile+Kconfig 的形式,要快很多,這也是Ninja誕生的意義。
2.南向開(kāi)發(fā),相比北向開(kāi)發(fā),更加碎片化,也更加復(fù)雜和繁瑣。對(duì)比一下工具鏈就知道了,那么長(zhǎng)....
3.官方給出了比較詳細(xì)的教程,但是方法太多,結(jié)構(gòu)太散,需要自己仔細(xì)閱讀和甄別。本文相當(dāng)于幫大家梳理了一番,具體細(xì)節(jié)還得個(gè)人好好把握。
4.配置開(kāi)發(fā)環(huán)境,是一項(xiàng)體力活,技術(shù)含量不大,但是特別磨人,不過(guò)邁出了這一步,接下來(lái)的就輕松啦!
文中開(kāi)發(fā)環(huán)境,關(guān)注:一口Linux,后臺(tái)回復(fù):鴻蒙,既可以獲?。?/p>