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