去年8 月份華為發(fā)布會(huì)上,華為發(fā)布了HarmonyOS NEXT預(yù)覽版,宣布不再兼容安卓應(yīng)用。大家期待的純血鴻蒙終于要來(lái)臨了,next 預(yù)覽版本現(xiàn)在已經(jīng)開放申請(qǐng)渠道了,Next 開發(fā)者預(yù)覽版本目前只向三款手機(jī)開放, mate 60、mate60 pro 和 mate x5。
什么是鴻蒙,他是 android 套殼嗎?
鴻蒙是華為自研的操作系統(tǒng),發(fā)布之初發(fā)現(xiàn)它上面也能兼容安卓應(yīng)用,大家紛紛猜想鴻蒙系統(tǒng)可能又是廠商自己經(jīng)過(guò)改造 android 套個(gè)殼發(fā)布是自研系統(tǒng),尤其是他剛開始出那個(gè)鴻蒙開發(fā)的時(shí)候,大家發(fā)現(xiàn)代碼包括開發(fā)方式都跟安卓很像,xml 布局、獲取控件等等。鴻蒙系統(tǒng)之所以能夠兼容安卓是因?yàn)槠洳捎昧朔植际郊夹g(shù)架構(gòu),并且通過(guò)HarmonyOS Runtime虛擬機(jī)環(huán)境來(lái)支持運(yùn)行基于Java語(yǔ)言開發(fā)的安卓應(yīng)用程序。大家發(fā)現(xiàn)在鴻蒙 OS 上運(yùn)行的應(yīng)用比別的手機(jī)快呢,是因?yàn)轼櫭?OS采用微內(nèi)核+AOSP(安卓系統(tǒng))雙架構(gòu)。對(duì)ART(Android Runtime)模式做了一個(gè)重要的優(yōu)化升級(jí)。那就是方舟編譯器替代了AOT(提前編譯)編譯器。方舟編譯器是基于AOT編譯器開發(fā)而來(lái),但完全擺脫了java虛擬機(jī)的機(jī)制,將高級(jí)語(yǔ)言的字節(jié)碼提前編譯成二進(jìn)制代碼,讓CPU直接運(yùn)行二進(jìn)制機(jī)器碼,運(yùn)行速度提升了60%。以往 android 那套 dex 機(jī)制反而落后。
微內(nèi)核與宏內(nèi)核
HarmonyOS NEXT完全舍棄 AOSP 直接采用微內(nèi)核單架構(gòu)。微內(nèi)核和宏內(nèi)核大家可以自己去深入了解一下。我就簡(jiǎn)單的描述一下,android 就是傳統(tǒng)的宏內(nèi)核,它將所有的核心功能(文件系統(tǒng)、內(nèi)存管理、設(shè)備驅(qū)動(dòng)等)都放在一個(gè)單一的執(zhí)行空間內(nèi)。這意味著所有的系統(tǒng)服務(wù)和功能都運(yùn)行在內(nèi)核的上下文中,彼此之間共享同一個(gè)地址空間,這樣做的好處是所有的服務(wù)都在一起,交互更加直接,壞處就是一個(gè)服務(wù)崩潰會(huì)影響到其他所有 的服務(wù)?,F(xiàn)在鴻蒙 4.0 其實(shí)完全跟 android 脫鉤了,他只是有雙架構(gòu)支持一下跑一下 Android。鴻蒙采用的是微內(nèi)核。盡可能的保持內(nèi)核的功能最小化,只保留一些最基本的服務(wù),其他的系統(tǒng)功能和服務(wù)都放在用戶空間,這樣做的好處就是他的穩(wěn)定性和可靠性上來(lái)了。而且提供服務(wù)裁剪,在不同的設(shè)備上部署不同的服務(wù),微內(nèi)核雖然增加了一些性能開銷。但是在這個(gè)性能過(guò)剩的時(shí)代里面。其實(shí)這個(gè)開銷基本可以忽略
應(yīng)用程序框架(Stage 模型)
HAP:OpenHarmony應(yīng)用編譯、分發(fā)、加載的基本單位。與開發(fā)態(tài)的module一一對(duì)應(yīng)。在應(yīng)用內(nèi),moduleName是其唯一標(biāo)識(shí);
Bundle:通過(guò)appid標(biāo)識(shí)的OpenHarmony應(yīng)用,Bundle可以包含多個(gè)HAP,每個(gè)應(yīng)用都有一個(gè)bundleName,但是bundleName并不能唯一標(biāo)識(shí)一個(gè)應(yīng)用,appid中包含bundleName以及其他的更多信息,能夠唯一標(biāo)識(shí)一個(gè)應(yīng)用;
AbilityStage:對(duì)應(yīng)HAP的運(yùn)行期對(duì)象,在HAP首次加載到進(jìn)程中時(shí)創(chuàng)建,運(yùn)行期開發(fā)者可見(jiàn);
Application:對(duì)應(yīng)Bundle的運(yùn)行期對(duì)象,運(yùn)行期開發(fā)者不可見(jiàn);
Context:提供運(yùn)行期開發(fā)者可以調(diào)用的各種能力,Ability組件和各種ExtensionAbility都有各自不同的Context類,他們都繼承自基類Context,基類提供包名、moduleName、路徑等信息;
Ability:提供生命周期回調(diào),持有AbilityContext,支持組件的跨端遷移和多端協(xié)同;
ExtensionAbility:基于場(chǎng)景的擴(kuò)展能力統(tǒng)稱,系統(tǒng)定義了多種場(chǎng)景的ExtensionAbility類,它們持有各自的ExtensionContext;WindowStage:本地窗口管理器;
Window:應(yīng)用窗口,持有一個(gè)ArkUI引擎實(shí)例;
ArkUI Page:基于ArkUI開發(fā)的用戶界面。
AbilityStage(開發(fā)者關(guān)注)
API9 之前是另外一種模型叫 FA 模型,這個(gè)我們先不講。我們來(lái)看 Ability,它 是 應(yīng)用程序框架中最基本的抽象單位,是能夠完成獨(dú)立功能的應(yīng)用組件。一個(gè)應(yīng)用可以是一個(gè) Ablity 也可以是多個(gè) Ability 組成。我們?cè)陂_發(fā)的過(guò)程通常都是分功能模塊來(lái)開發(fā)的,每一個(gè)功能模塊就是一個(gè) Ability。在鴻蒙開發(fā)里面每一個(gè) module 都是可以單獨(dú)打包成 HAP 文件獨(dú)立運(yùn)行,也可以多個(gè) hap 打包成一個(gè) app pack 來(lái)運(yùn)行。舉個(gè)例子,如果我們來(lái)開發(fā)抖音的短視頻模塊和電商模塊。電商模塊是比較獨(dú)立的一個(gè)功能,那我們可以用兩個(gè) Ability 來(lái)完成一個(gè)抖音應(yīng)用,也可以單獨(dú)發(fā)布一個(gè)純凈版的短視頻版 抖音,不包含電商的功能
很多人問(wèn)過(guò)我 Android 的 Activity跟鴻蒙的 UIAbility 是不是類似的東西,其實(shí)他們兩個(gè)的思想是類似的,都是用于用戶界面展示和用戶交互的組件,簡(jiǎn)單點(diǎn)理解可以認(rèn)為ArkUI Pgae就相當(dāng)于 Fragment,一個(gè) Ability 就是一個(gè) “Activity”,現(xiàn)在 Activity 放入一個(gè) fragment就相當(dāng)于Ability 在他的WindowStage創(chuàng)建的時(shí)候load 了一個(gè)ArkUI page
Ability加載一個(gè) page
Ability 的層級(jí)比 Activity在 android 應(yīng)用里面的層級(jí)要高一個(gè)層級(jí),我們都知道每一個(gè) Activity 要在 manifest 里面去注冊(cè),而在我們的 Ability 里面,每一個(gè) page 是要注冊(cè)注冊(cè)在我們自己模塊下面的 main_pages.json下面的。Ability 的頁(yè)面跳轉(zhuǎn)是通過(guò)路由的方式來(lái)跳轉(zhuǎn)的,通過(guò)導(dǎo)入 router 包,調(diào)用 router.pushUrl(“頁(yè)面路由")來(lái)跳轉(zhuǎn)。同時(shí)各個(gè)頁(yè)面之前還可以進(jìn)行數(shù)據(jù)通訊,這么一看,好像鴻蒙里面的 ArkUI Page 是不是也像一個(gè) Activity。講到這里,大家應(yīng)該可能覺(jué)得Ablity 好像也承擔(dān)了一部分 Android 里面 Application 的功能。所以歸根到底它們倆不是同一個(gè)東西,正好印證了我們前面所說(shuō)的 Ability 是完成獨(dú)立功能的應(yīng)用組件。而不僅僅只是一個(gè)頁(yè)面,里面放了很多 View。有想了解更多的可以關(guān)注一下這篇文章,鏈接丟上來(lái)文章會(huì)被鎖,大家可以搜索這個(gè)關(guān)鍵詞
harmony(鴻蒙)Stage模型綜述
Harmony OS與 OpenHarmony
引用一下 ChatGpt上面的解釋
OpenHarmony是華為提取了Harmony OS 的基礎(chǔ)功能進(jìn)行開源的一個(gè)操作系統(tǒng),是 Harmony OS 的基礎(chǔ)版本。可以理解為它是 Android 的某一個(gè)版本,比如 Android 14.那么 Harmony OS 就是華為自己根據(jù) Android 14 定制的一個(gè)服務(wù)于自己手機(jī)的一個(gè)操作系統(tǒng),目前華為鴻蒙的專用開發(fā)工具 DevEco Studio自帶 Harmony OS SDK。所以我們?nèi)绻腔谌A為設(shè)備進(jìn)行開發(fā)的話,只需要關(guān)注Harmony OS 的開發(fā)即可。如果想使用 ArkUI-X構(gòu)建跨平臺(tái)應(yīng)用可以下載官方OpenHarmony SDK進(jìn)行開發(fā)
這一篇我們講了一下鴻蒙系統(tǒng)為什么不是 Android 套殼還能跑 android 的原因,也介紹了一些初步的鴻蒙系統(tǒng)的一些知識(shí),后續(xù)的文章我會(huì)正式開始更新 TS、ArkTS、ArkUI以及 ArkUI-X構(gòu)建跨平臺(tái)應(yīng)用的相關(guān)文章,喜歡的朋友多多點(diǎn)贊。大家一起學(xué)習(xí),一起進(jìn)步
審核編輯 黃宇
-
AOSP
+關(guān)注
關(guān)注
0文章
16瀏覽量
6196 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2352瀏覽量
42856 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
1975瀏覽量
30194
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論