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

DevEco Studio AI輔助開發工具兩大升級功能 鴻蒙應用開發效率再提升
【「極速探索HarmonyOS NEXT 」閱讀體驗】 一本書開啟了鴻蒙開發的整個生態資源
【「極速探索HarmonyOS NEXT 」閱讀體驗】 初印象:一本純血鴻蒙應用開發入門的好書
DevEco Studio構建分析工具Build Analyzer 為原生鴻蒙應用開發提速
名單公布!【書籍評測活動NO.56】極速探索HarmonyOS NEXT:純血鴻蒙應用開發實踐
鴻蒙開發:【進程模型概述】

鴻蒙開發組件:創建DataAbility

鴻蒙開發:啟動指定頁面

鴻蒙開發:創建PageAbility

鴻蒙開發:啟動本地PageAbility

評論