一. 與Android系統(tǒng)架構(gòu)比對(duì)
1. HarmonyOs架構(gòu)概覽
- HarmonyOs的架構(gòu)分為內(nèi)核層何恶、系統(tǒng)服務(wù)層、應(yīng)用框架層和應(yīng)用層惜辑。
1.1 內(nèi)核層
- 內(nèi)核層主要由內(nèi)核子系統(tǒng)和驅(qū)動(dòng)子系統(tǒng)組成:
內(nèi)核子系統(tǒng):HarmonyOS采用多內(nèi)核設(shè)計(jì)盛撑,支持針對(duì)不同資源受限設(shè)備選用適合的OS內(nèi)核捧搞,如:Linux Kernel, LiteOs等胎撇。
內(nèi)核抽象層(KAL,KernelAbstract Layer):通過屏蔽多內(nèi)核差異碗短,對(duì)上層提供基礎(chǔ)的內(nèi)核能力偎谁,包括進(jìn)程/線程管理纲堵、內(nèi)存管理席函、文件系統(tǒng)、網(wǎng)絡(luò)管理和外設(shè)管理等正蛙。
驅(qū)動(dòng)子系統(tǒng):HarmonyOS驅(qū)動(dòng)框架(HDF)是HarmonyOS硬件生態(tài)開放的基礎(chǔ)乒验,提供統(tǒng)一外設(shè)訪問能力和驅(qū)動(dòng)開發(fā)蒂阱、管理框架录煤。
1.2 系統(tǒng)服務(wù)層
- 系統(tǒng)服務(wù)層是HarmonyOS的核心能力集合,通過應(yīng)用框架層對(duì)應(yīng)用程序提供服務(wù)了嚎。該層包含以下幾個(gè)部分:
系統(tǒng)基本能力子系統(tǒng)集:為分布式應(yīng)用在HarmonyOS多設(shè)備上的運(yùn)行歪泳、調(diào)度赘风、遷移等操作提供了基礎(chǔ)能力邀窃,由分布式軟總線、分布式數(shù)據(jù)管理鞍历、分布式任務(wù)調(diào)度劣砍、方舟多語言運(yùn)行時(shí)扇救、公共基礎(chǔ)庫、多模輸入靠娱、圖形掠兄、安全蚂夕、AI等子系統(tǒng)組成婿牍。其中,方舟運(yùn)行時(shí)提供了C/C++/JS多語言運(yùn)行時(shí)和基礎(chǔ)的系統(tǒng)類庫铐维,也為使用方舟編譯器靜態(tài)化的Java程序(即應(yīng)用程序或框架層中使用Java語言開發(fā)的部分)提供運(yùn)行時(shí)嫁蛇。
基礎(chǔ)軟件服務(wù)子系統(tǒng)集:為HarmonyOS提供公共的露该、通用的軟件服務(wù)解幼,由事件通知、電話底靠、多媒體暑中、DFX鲫剿、MSDP&DV等子系統(tǒng)組成灵莲。
增強(qiáng)軟件服務(wù)子系統(tǒng)集:為HarmonyOS提供針對(duì)不同設(shè)備的、差異化的能力增強(qiáng)型軟件服務(wù)枚抵,由智慧屏專有業(yè)務(wù)汽摹、穿戴專有業(yè)務(wù)竖慧、IoT專有業(yè)務(wù)等子系統(tǒng)組成逆屡。
硬件服務(wù)子系統(tǒng)集:為HarmonyOS提供硬件服務(wù)魏蔗,由位置服務(wù)砍的、生物特征識(shí)別、穿戴專有硬件服務(wù)莺治、IoT專有硬件服務(wù)等子系統(tǒng)組成谣旁。
1.3 應(yīng)用框架層
- 應(yīng)用框架層為HarmonyOS的應(yīng)用程序提供了Java/C/C++/JS等多語言的用戶程序框架和Ability框架榄审,以及各種軟硬件服務(wù)對(duì)外開放的多語言框架API搁进;
- 應(yīng)用框架層為采用HarmonyOS的設(shè)備提供了C/C++/JS等多語言的框架API,不同設(shè)備支持的API與系統(tǒng)的組件化裁剪程度相關(guān)影兽。
1.4 應(yīng)用層
- 應(yīng)用層包括系統(tǒng)應(yīng)用和第三方非系統(tǒng)應(yīng)用峻堰。
- HarmonyOS的應(yīng)用由一個(gè)或多個(gè)FA(Feature Ability)或PA(Particle Ability)組成:
FA有UI界面茧妒,提供與用戶交互的能力左冬;
PA無UI界面拇砰,提供后臺(tái)運(yùn)行任務(wù)的能力以及統(tǒng)一的數(shù)據(jù)訪問抽象狰腌。
- 基于FA/PA開發(fā)的應(yīng)用琼腔,能夠?qū)崿F(xiàn)特定的業(yè)務(wù)功能丹莲,支持跨設(shè)備調(diào)度與分發(fā)尸诽,為用戶提供一致性含、高效的應(yīng)用體驗(yàn)商蕴。
2. 與Android系統(tǒng)架構(gòu)比對(duì)
2.1 架構(gòu)不同
- HarmonyOs和Android系統(tǒng)都是基于Linux,但是HarmonyOs是基于微內(nèi)核(Micro Kernel)架構(gòu)設(shè)計(jì)苛谷,而Android系統(tǒng)是基于宏內(nèi)核/單內(nèi)核(Monolithic Kernel)架構(gòu)設(shè)計(jì):
微內(nèi)核:內(nèi)核管理著所有的系統(tǒng)資源抄腔,在微內(nèi)核中用戶服務(wù)和內(nèi)核服務(wù)在不同的地址空間中實(shí)現(xiàn)赫蛇。在應(yīng)用程序和硬件的通信中悟耘,內(nèi)核進(jìn)程和內(nèi)存管理的極小的服務(wù)织狐,而客戶端程序和運(yùn)行在用戶空間的服務(wù)通過消息的傳遞來建立通信移迫,它們之間不會(huì)有直接的交互厨埋,這樣一來,微內(nèi)核中的執(zhí)行速度相對(duì)就比較慢了雨效,這是微內(nèi)核架構(gòu)的一個(gè)缺點(diǎn)徽龟。
在內(nèi)核架構(gòu)中,用戶服務(wù)是獨(dú)立于內(nèi)核服務(wù)的传透,因此任何用戶服務(wù)崩潰都不會(huì)影響到內(nèi)核服務(wù)旷祸,這就加強(qiáng)了操作系統(tǒng)的健壯性,這是微內(nèi)核的優(yōu)勢(shì)所在浸赫。另一點(diǎn)赃绊,微內(nèi)核的擴(kuò)展性強(qiáng)碧查,添加一個(gè)功能忠售,只需要建立一個(gè)新的服務(wù)到用戶空間當(dāng)中稻扬,而內(nèi)核空間不需要任何的修改。因此盼砍,微內(nèi)核可移植性強(qiáng)浇坐、安全并且易于擴(kuò)展近刘。宏內(nèi)核定義:宏內(nèi)核同樣管理著用戶程序和硬件之間的系統(tǒng)資源跌宛,但是和微內(nèi)核不一樣的是,在宏內(nèi)核架構(gòu)中蜕猫,用戶服務(wù)和內(nèi)核服務(wù)在同一空間中實(shí)現(xiàn)回右。具體一點(diǎn)翔烁,就是內(nèi)核可以代表內(nèi)核進(jìn)程運(yùn)行代碼蹬屹,就是通常的內(nèi)核進(jìn)程白华;當(dāng)用戶進(jìn)程經(jīng)過系統(tǒng)調(diào)用或者中斷進(jìn)入到內(nèi)核態(tài)時(shí)弧腥,內(nèi)核也可以代表它運(yùn)行代碼管搪。這樣一來更鲁,宏內(nèi)核需要管理的資源多于微內(nèi)核澡为,其大小就相對(duì)大一些了缀壤。
在宏內(nèi)核架構(gòu)當(dāng)中,內(nèi)核管理著CPU調(diào)度筋夏,內(nèi)存管理条篷,文件管理和系統(tǒng)調(diào)用等各模塊的的工作赴叹,由于用戶服務(wù)和內(nèi)核服務(wù)被實(shí)現(xiàn)在同一空間中乞巧,這樣在執(zhí)行速度上要比微內(nèi)核快绽媒。然而,宏內(nèi)核的劣勢(shì)也是顯而易見的囤热,那就是當(dāng)內(nèi)核中的某個(gè)服務(wù)崩潰了旁蔼,整個(gè)內(nèi)核也會(huì)崩潰牌芋。另一點(diǎn),想要在內(nèi)核中添加新的功能就意味著內(nèi)核中的各個(gè)模塊需要做相應(yīng)的修改经宏,因此其擴(kuò)展性很弱烁兰。
- 總結(jié)微內(nèi)核和宏內(nèi)核的區(qū)別如下:
區(qū)別 | 微內(nèi)核 | 宏內(nèi)核 |
---|---|---|
基本概念 | 用戶服務(wù)和內(nèi)核服務(wù)運(yùn)行在不同的地址空間 | 用戶服務(wù)和內(nèi)核服務(wù)運(yùn)行在相同的地址空間 |
執(zhí)行速度 | 慢 | 快 |
尺寸 | 較小 | 較大 |
可擴(kuò)展性 | 易擴(kuò)展 | 不易擴(kuò)展 |
安全性 | 單個(gè)服務(wù)崩潰不影響全局 | 單個(gè)服務(wù)崩潰往往意味整個(gè)系統(tǒng)崩潰 |
開發(fā)量 | 開發(fā)量大 | 平臺(tái)提供的代碼多,相對(duì)開發(fā)量少 |
2.2 使用范圍不同
- 原生Android系統(tǒng)主要適用于手機(jī)主之。
- HarmonyOs采用了分布式設(shè)計(jì),可以支持手機(jī)李根、智能穿戴設(shè)備槽奕、電腦、電視等智能家居設(shè)備房轿,形成一個(gè)無縫的粤攒、統(tǒng)一的操作系統(tǒng)所森。
二. 與Android系統(tǒng)工程結(jié)構(gòu)比對(duì)
1. HarmonyOs的APP工程結(jié)構(gòu)
- HarmonyOS的應(yīng)用軟件包以APP Pack(Application Package)形式發(fā)布,它是由一個(gè)或多個(gè)HAP(HarmonyOS Ability Package)以及描述每個(gè) HAP 屬性的 pack.info 組成夯接。
- HAP是Ability的部署包,HarmonyOS應(yīng)用代碼圍繞Ability組件展開盔几。一個(gè)HAP是由代碼晴弃、資源、第三方庫及應(yīng)用配置文件組成的模塊包问欠,可分為entry和feature兩種模塊類型:
entry:應(yīng)用的主模塊肝匆。一個(gè) APP 中,對(duì)于同一設(shè)備類型必須有且只有一個(gè) entry類型的HAP顺献,可獨(dú)立安裝運(yùn)行旗国。
feature:應(yīng)用的動(dòng)態(tài)特性模塊。一個(gè) APP 可以包含一個(gè)或多個(gè) feature類型的HAP注整,也可以不含能曾。
2. 與Android工程結(jié)構(gòu)對(duì)比
-
HarmonyOS工程目錄結(jié)構(gòu):
-
Android系統(tǒng)工程目錄結(jié)構(gòu):
目錄結(jié)構(gòu) | Android | HarmonyOS |
---|---|---|
源碼目錄 | project\entry\src\main\java | project\app\src\main\java |
資源文件目錄 | project\app\src\main\res | project\entry\src\main\resources |
清單文件 | project\app\src\main\AndroidManifest.xml | project\entry\src\main\config.json |
依賴文件目錄 | project\app\libs | project\entry\libs |
模塊編譯配置文件 | project\app\build.gradle | project\entry\build.gradle |
gradle目錄 | project\gradle | project\gradle |
- 此外,HarmonyOS還支持用JS開發(fā):
三. 與Android安裝包比對(duì)
- Android應(yīng)用最終會(huì)被打包成.apk文件肿轨。
-
HarmonyOS應(yīng)用會(huì)被構(gòu)建成.hap文件寿冕,hap是由代碼、資源和第三方庫及應(yīng)用配置文件組成的模塊包椒袍。
- hap文件在被打包構(gòu)建時(shí)會(huì)生成一個(gè)entry_signed_entry.apk文件驼唱,用于兼容Android系統(tǒng)。
- classes.dex文件與Android系統(tǒng)相同驹暑,對(duì)應(yīng)HarmonyOS中Java部分的代碼玫恳。
- assets\entry\resources對(duì)應(yīng)Android系統(tǒng)中的res目錄,用于儲(chǔ)存resources中的資產(chǎn)文件优俘。
- config.json對(duì)應(yīng)Android系統(tǒng)中的AndroidosManifest.xml清單文件京办。