前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用

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

作者头像
蒙娜丽宁
发布2020-10-27 16:35:47
1.7K0
发布2020-10-27 16:35:47
举报
文章被收录于专栏:极客起源

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)。

图1 白衣无天和黑衣无天

2. HarmonyOS设备还可以当Android设备用,你赚到了

既然HarmonyOS内置了Android系统,那么同样也可以将HarmonyOS设备当做Android设备来用。我们知道,目前只能在DevEco Studio中启动HarmonyOS预览器来体验HarmonyOS 2.0,而且同一个开发者账号同时只能获得一个HarmonyOS预览器实例。要想启动多个HarmonyOS 预览器,需要通过多个华为开发者账号,以及在不同的机器上来完成。当然,等华为发布HarmonyOS模拟器以及HarmonyOS设备后,就可以在本机获得多个HarmonyOS实例了。例如,启动HarmonyOS模拟器后,还可以连接HarmonyOS 的真实设备。例如,下面连接了安装HarmonyOS 2.0的华为智慧屏,效果如下面几个图所示。

图2

图3

图4

如果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设备,如下图所示。

图6

选择一个运行设备,然后运行Flutter App,就会将编译生成的apk上传到HarmonyOS设备并运行,效果如下图所示。

图7

点击右下角的按钮,会显示Android的Toast信息框,如下图所示。

图8

我们再看看Flutter App是否真的安装在了HarmonyOS设备上。进入“全部应用”列表,会看到最后一个深绿色带小机器人的图标(该图标可以修改),这就是前面运行的Flutter App。而且从App的运行效果上看并不能分辨哪一个是Android App,哪一个是HarmonyOS App,所以HarmonyOS真正做到了两套系统无缝切换,用户完全感觉不到。

图9

3. 用adb命令行控制HarmonyOS设备

用adb命令同样可以控制HarmonyOS设备,只不过控制的是Android部分。由于HarmonyOS与Android共用一个设备,所以就相当于控制HarmonyOS设备了。

例如,用adb devices命令会列出当前环境连接了多少部HarmonyOS设备(当然,也包括Android设备),例如,下图列出了3个设备,前两个是HarmonyOS设备,最后一个是Android设备。其实从这个列表中根本看不出来哪一个是HarmonyOS设备,哪一个是Android设备。其实从本质上,他们都应该属于Android设备,只是前两个设备的Android来至于HarmonyOS的内置Android,而最后一个来至于纯的Android。

图10

用adb install test.apk可以安装Android App,用adb shell screencap可以截图,用adb push命令可以将文件上传到HarmonyOS设备的指定目录,还有很多adb命令的用法,这些大家可以自己去测试。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客起源 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档