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

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


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

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

點(diǎn)擊右下角的按鈕,會(huì)顯示Android的Toast信息框,如下圖所示。

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

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

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