牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用

开发 前端
文章由鸿蒙社区产出,想要了解更多内容请前往:51CTO和华为官方战略合作共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz

想了解更多内容,请访问:
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个设备是华为智慧屏。 

图5 

既然HarmonyOS集成了Android系统,那么在HarmonyOS中可否直接发布Android App呢?当然是可以的。而且可以直接从Android Studio工程的源代码编译和发布。

为了更好地体现HarmonyOS的兼容性,这里使用了Flutter(Google推出的用于开发Android App和iOS App的跨平台开发框架,使用Google的亲儿子Dart语言开发)来开发Android App。现在启动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

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2020-10-10 09:20:35

鸿蒙

2021-01-06 10:59:14

鸿蒙HarmonyOSPage Abilit

2021-02-02 15:40:36

鸿蒙HarmonyOS应用开发

2020-11-05 10:05:25

App

2012-08-15 10:11:59

Android移动设备Flash

2022-08-15 22:20:46

应用开发华为IoT平台

2021-04-19 09:25:39

鸿蒙HarmonyOS应用

2018-04-02 17:52:33

闪存

2022-12-30 16:19:48

鸿蒙开发工具

2013-08-06 09:52:23

2022-10-11 15:26:16

网络编程鸿蒙

2010-02-04 15:50:28

Android设备

2021-01-06 11:21:56

鸿蒙HarmonyOS应用开发

2017-02-14 09:19:18

2020-12-01 15:37:07

Python

2012-03-28 16:30:08

LinuxAndroid

2019-07-10 14:25:59

Android鸿蒙华为

2015-03-17 09:49:52

无线安全移动安全

2012-03-28 21:50:41

Android

2012-07-12 09:56:38

点赞
收藏

51CTO技术栈公众号