鴻蒙開(kāi)發(fā)介紹(附Next開(kāi)發(fā)預(yù)覽版申請(qǐng)鏈接)

????????去年8 月份華為發(fā)布會(huì)上,華為發(fā)布了HarmonyOS NEXT預(yù)覽版,宣布不再兼容安卓應(yīng)用。大家期待的純血鴻蒙終于要來(lái)臨了,next 預(yù)覽版本現(xiàn)在已經(jīng)開(kāi)放申請(qǐng)渠道了,Next 開(kāi)發(fā)者預(yù)覽版本目前只向三款手機(jī)開(kāi)放, mate 60、mate60 pro 和 mate x5。申請(qǐng)鏈接我放在下面

Next 預(yù)覽版開(kāi)發(fā)者申請(qǐng)

什么是鴻蒙,他是 android 套殼嗎?

? ? ? ? ?鴻蒙是華為自研的操作系統(tǒng),發(fā)布之初發(fā)現(xiàn)它上面也能兼容安卓應(yīng)用,大家紛紛猜想鴻蒙系統(tǒng)可能又是廠商自己經(jīng)過(guò)改造 android 套個(gè)殼發(fā)布是自研系統(tǒng),尤其是他剛開(kāi)始出那個(gè)鴻蒙開(kāi)發(fā)的時(shí)候,大家發(fā)現(xiàn)代碼包括開(kāi)發(fā)方式都跟安卓很像,xml 布局、獲取控件等等。鴻蒙系統(tǒng)之所以能夠兼容安卓是因?yàn)槠洳捎昧朔植际郊夹g(shù)架構(gòu),并且通過(guò)HarmonyOS Runtime虛擬機(jī)環(huán)境來(lái)支持運(yùn)行基于Java語(yǔ)言開(kāi)發(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編譯器開(kāi)發(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ù)。現(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)核雖然增加了一些性能開(kāi)銷(xiāo)。但是在這個(gè)性能過(guò)剩的時(shí)代里面。其實(shí)這個(gè)開(kāi)銷(xiāo)基本可以忽略

應(yīng)用程序框架(Stage 模型)


Stage 模型參考圖

HAP:OpenHarmony應(yīng)用編譯、分發(fā)、加載的基本單位。與開(kāi)發(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)行期開(kāi)發(fā)者可見(jiàn);

Application:對(duì)應(yīng)Bundle的運(yùn)行期對(duì)象,運(yùn)行期開(kāi)發(fā)者不可見(jiàn);

Context:提供運(yùn)行期開(kāi)發(fā)者可以調(diào)用的各種能力,Ability組件和各種ExtensionAbility都有各自不同的Context類(lèi),他們都繼承自基類(lèi)Context,基類(lèi)提供包名、moduleName、路徑等信息;

Ability:提供生命周期回調(diào),持有AbilityContext,支持組件的跨端遷移和多端協(xié)同;

ExtensionAbility:基于場(chǎng)景的擴(kuò)展能力統(tǒng)稱(chēng),系統(tǒng)定義了多種場(chǎng)景的ExtensionAbility類(lèi),它們持有各自的ExtensionContext;WindowStage:本地窗口管理器;

Window:應(yīng)用窗口,持有一個(gè)ArkUI引擎實(shí)例;

ArkUI Page:基于ArkUI開(kāi)發(fā)的用戶界面。

AbilityStage(開(kāi)發(fā)者關(guān)注)

????????API9 之前是另外一種模型叫 FA 模型,這個(gè)我們先不講。我們來(lái)看 Ability,它?是 應(yīng)用程序框架中最基本的抽象單位,是能夠完成獨(dú)立功能的應(yīng)用組件。一個(gè)應(yīng)用可以是一個(gè) Ablity 也可以是多個(gè) Ability 組成。我們?cè)陂_(kāi)發(fā)的過(guò)程通常都是分功能模塊來(lái)開(kāi)發(fā)的,每一個(gè)功能模塊就是一個(gè) Ability。在鴻蒙開(kāi)發(fā)里面每一個(gè) module 都是可以單獨(dú)打包成 HAP 文件獨(dú)立運(yùn)行,也可以多個(gè) hap 打包成一個(gè) app pack 來(lái)運(yùn)行。舉個(gè)例子,如果我們來(lái)開(kāi)發(fā)抖音的短視頻模塊和電商模塊。電商模塊是比較獨(dú)立的一個(gè)功能,那我們可以用兩個(gè) Ability 來(lái)完成一個(gè)抖音應(yīng)用,也可以單獨(dú)發(fā)布一個(gè)純凈版的短視頻版 抖音,不包含電商的功能

????????很多人問(wèn)過(guò)我 Android 的 Activity跟鴻蒙的 UIAbility 是不是類(lèi)似的東西,其實(shí)他們兩個(gè)的思想是類(lèi)似的,都是用于用戶界面展示和用戶交互的組件,簡(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)行開(kāi)源的一個(gè)操作系統(tǒng),是 Harmony OS 的基礎(chǔ)版本??梢岳斫鉃樗?Android 的某一個(gè)版本,比如 Android 14.那么 Harmony OS 就是華為自己根據(jù) Android 14 定制的一個(gè)服務(wù)于自己手機(jī)的一個(gè)操作系統(tǒng),目前華為鴻蒙的專(zhuān)用開(kāi)發(fā)工具 DevEco Studio自帶 Harmony OS SDK。所以我們?nèi)绻腔谌A為設(shè)備進(jìn)行開(kāi)發(fā)的話,只需要關(guān)注Harmony OS 的開(kāi)發(fā)即可。如果想使用 ArkUI-X構(gòu)建跨平臺(tái)應(yīng)用可以下載官方OpenHarmony SDK進(jìn)行開(kāi)發(fā)

? ? ? ? 這一篇我們講了一下鴻蒙系統(tǒng)為什么不是 Android 套殼還能跑 android 的原因,也介紹了一些初步的鴻蒙系統(tǒng)的一些知識(shí),后續(xù)的文章我會(huì)正式開(kāi)始更新 TS、ArkTS、ArkUI以及 ArkUI-X構(gòu)建跨平臺(tái)應(yīng)用的相關(guān)文章,喜歡的朋友多多點(diǎn)贊。大家一起學(xué)習(xí),一起進(jìn)步

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評(píng)論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,656評(píng)論 3 419
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事?!?“怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,697評(píng)論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,098評(píng)論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,855評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,254評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評(píng)論 3 442
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,473評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,014評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,833評(píng)論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,016評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,273評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,680評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,946評(píng)論 1 288
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,730評(píng)論 3 393
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,006評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容