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

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


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

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

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

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

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

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