牛掰了!鴻蒙與Android完美融合,將鴻蒙設(shè)備當Android設(shè)備用
想了解更多內(nèi)容,請訪問:
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com
1. 你看著是鴻蒙,其實它是Android,你看著是Android,其實它是鴻蒙
到現(xiàn)在為止,鴻蒙(HarmonyOS)2.0已經(jīng)推出一個多月了,可能很多小伙伴都迫不及待想要了解HarmonyOS到底是一個什么東西。華為官網(wǎng)已經(jīng)放出了一款I(lǐng)DE:DevEco Studio 2.0,用來開發(fā)HarmonyOS App,可以使用兩種編程語言進行開發(fā):Java和JavaScript。這兩種編程語言是等效和獨立的。也就是說,使用Java和JavaScript可以開發(fā)出同樣的HarmonyOS App。
基于Java的開發(fā)方式與開發(fā)Android App類似,基于JavaScript的開發(fā)方式與開發(fā)微信小程序類似。本文只討論使用Java開發(fā)HarmonyOS App的方式。
可能很多小伙伴已經(jīng)對HarmonyOS研究的比較透了,發(fā)現(xiàn)鴻蒙App的開發(fā)方式與Android類似,更細心的小伙伴發(fā)現(xiàn)使用adb devices命令同樣可以得到HarmonyOS模擬器列表,于是就不假思索地認為HarmonyOS是Android的套殼。
其實事實并非你想象的那樣。沒錯,通過adb devices命令是可以檢測到HarmonyOS的設(shè)備,不過這只是檢測到了HarmonyOS中的Android部分。也就是說,HarmonyOS其實內(nèi)部包含了HarmonyOS和Android兩部分。如果安裝的是HAP(HarmonyOS的安裝包,類似Android的apk),就會用HarmonyOS部分來運行,如果安裝的是apk,就會用Android部分來運行。所以HarmonyOS本質(zhì)上不是套殼Android,而是與Android并行,相當于HarmonyOS設(shè)備中同時運行了HarmonyOS和Android兩個系統(tǒng),而這一切,對于用戶是透明的。這有點像《西游記后傳》中的白衣無天和黑衣無天。他們共用一個身體,但卻是善和惡的兩面,當善念發(fā)作,會出現(xiàn)白衣無天,當惡念發(fā)作時,會出現(xiàn)黑衣無天一樣。同一個神(無天),兩種性格(白衣和黑衣),同一個系統(tǒng)(HarmonyOS),運行兩類App(HarmonyOS和Android)。

2. HarmonyOS設(shè)備還可以當Android設(shè)備用,你賺到了
既然HarmonyOS內(nèi)置了Android系統(tǒng),那么同樣也可以將HarmonyOS設(shè)備當做Android設(shè)備來用。我們知道,目前只能在DevEco Studio中啟動HarmonyOS預(yù)覽器來體驗HarmonyOS 2.0,而且同一個開發(fā)者賬號同時只能獲得一個HarmonyOS預(yù)覽器實例。要想啟動多個HarmonyOS 預(yù)覽器,需要通過多個華為開發(fā)者賬號,以及在不同的機器上來完成。當然,等華為發(fā)布HarmonyOS模擬器以及HarmonyOS設(shè)備后,就可以在本機獲得多個HarmonyOS實例了。例如,啟動HarmonyOS模擬器后,還可以連接HarmonyOS 的真實設(shè)備。例如,下面連接了安裝HarmonyOS 2.0的華為智慧屏,效果如下面幾個圖所示。


如果DevEco Studio發(fā)現(xiàn)連接了多個HarmonyOS設(shè)備,運行HarmonyOS App時就會彈出下圖的選擇發(fā)布設(shè)備窗口。第1個設(shè)備是HarmonyOS預(yù)覽器,第2個設(shè)備是華為智慧屏。

既然HarmonyOS集成了Android系統(tǒng),那么在HarmonyOS中可否直接發(fā)布Android App呢?當然是可以的。而且可以直接從Android Studio工程的源代碼編譯和發(fā)布。
為了更好地體現(xiàn)HarmonyOS的兼容性,這里使用了Flutter(Google推出的用于開發(fā)Android App和iOS App的跨平臺開發(fā)框架,使用Google的親兒子Dart語言開發(fā))來開發(fā)Android App。現(xiàn)在啟動Android Studio,然后創(chuàng)建一個Flutter工程。在Android Studio上方的設(shè)備選擇列表中(由于目前DevEco Studio 2.0只支持Windows,所以這里使用Windows版的Android Studio,如果是macOS版的Android Studio,還會出現(xiàn)iOS設(shè)備)就會出現(xiàn)前面啟動的兩個HarmonyOS設(shè)備,如下圖所示。
選擇一個運行設(shè)備,然后運行Flutter App,就會將編譯生成的apk上傳到HarmonyOS設(shè)備并運行,效果如下圖所示。

點擊右下角的按鈕,會顯示Android的Toast信息框,如下圖所示。

我們再看看Flutter App是否真的安裝在了HarmonyOS設(shè)備上。進入“全部應(yīng)用”列表,會看到最后一個深綠色帶小機器人的圖標(該圖標可以修改),這就是前面運行的Flutter App。而且從App的運行效果上看并不能分辨哪一個是Android App,哪一個是HarmonyOS App,所以HarmonyOS真正做到了兩套系統(tǒng)無縫切換,用戶完全感覺不到。

3. 用adb命令行控制HarmonyOS設(shè)備
用adb命令同樣可以控制HarmonyOS設(shè)備,只不過控制的是Android部分。由于HarmonyOS與Android共用一個設(shè)備,所以就相當于控制HarmonyOS設(shè)備了。
例如,用adb devices命令會列出當前環(huán)境連接了多少部HarmonyOS設(shè)備(當然,也包括Android設(shè)備),例如,下圖列出了3個設(shè)備,前兩個是HarmonyOS設(shè)備,最后一個是Android設(shè)備。其實從這個列表中根本看不出來哪一個是HarmonyOS設(shè)備,哪一個是Android設(shè)備。其實從本質(zhì)上,他們都應(yīng)該屬于Android設(shè)備,只是前兩個設(shè)備的Android來至于HarmonyOS的內(nèi)置Android,而最后一個來至于純的Android。

用adb install test.apk可以安裝Android App,用adb shell screencap可以截圖,用adb push命令可以將文件上傳到HarmonyOS設(shè)備的指定目錄,還有很多adb命令的用法,這些大家可以自己去測試。
想了解更多內(nèi)容,請訪問:
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com