牛掰了!鸿蒙与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

鸿蒙

2024-04-02 11:31:33

USBAndroid

2018-04-02 17:52:33

闪存

2012-08-15 10:11:59

Android移动设备Flash

2013-08-06 09:52:23

2010-02-04 15:50:28

Android设备

2017-02-14 09:19:18

2012-03-28 16:30:08

LinuxAndroid

2012-03-28 21:50:41

Android

2011-02-24 13:28:12

2015-03-17 09:49:52

无线安全移动安全

2020-11-05 10:05:25

App

2019-08-07 15:11:27

iPad电脑集线器

2017-03-07 08:45:24

AndroidCPU锁频

2011-03-08 09:28:10

iOS4.3iOSiPad

2010-02-07 11:13:04

Android设备间

2012-09-12 09:10:23

Android虚拟设备创建指南

2012-07-12 09:56:38

2011-01-13 09:02:04

Webcloudrovi

2021-09-22 15:15:45

谷歌隐私网络安全
点赞
收藏

51CTO技术栈公众号