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

鸿蒙开发者社区官方账号
发布于 2020-10-9 13:48
浏览
5收藏

牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用 -鸿蒙开发者社区

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

 

牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用 -鸿蒙开发者社区

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


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

牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用 -鸿蒙开发者社区

牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用 -鸿蒙开发者社区

牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用 -鸿蒙开发者社区

 

如果DevEco Studio发现连接了多个HarmonyOS设备,运行HarmonyOS App时就会弹出下图的选择发布设备窗口。第1个设备是HarmonyOS预览器,第2个设备是华为智慧屏。

 

牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用 -鸿蒙开发者社区

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

牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用 -鸿蒙开发者社区

 

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

牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用 -鸿蒙开发者社区

 

点击右下角的按钮,会显示Android的Toast信息框,如下图所示。牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用 -鸿蒙开发者社区

 

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

牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用 -鸿蒙开发者社区

 

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


用adb命令同样可以控制HarmonyOS设备,只不过控制的是Android部分。由于HarmonyOS与Android共用一个设备,所以就相当于控制HarmonyOS设备了。
例如,用adb devices命令会列出当前环境连接了多少部HarmonyOS设备(当然,也包括Android设备),例如,下图列出了3个设备,前两个是HarmonyOS设备,最后一个是Android设备。其实从这个列表中根本看不出来哪一个是HarmonyOS设备,哪一个是Android设备。其实从本质上,他们都应该属于Android设备,只是前两个设备的Android来至于HarmonyOS的内置Android,而最后一个来至于纯的Android。牛掰了!鸿蒙与Android完美融合,将鸿蒙设备当Android设备用 -鸿蒙开发者社区

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

 

 

作者:李宁

分类
已于2020-10-9 13:48:39修改
6
收藏 5
回复
举报
26条回复
按时间正序
/
按时间倒序
鸿蒙开发者社区官方账号
鸿蒙开发者社区官方账号

有点意思。。。。。。

回复
2020-10-9 14:50:26
啧啧啧GKD
啧啧啧GKD

真实牛掰了啊!佛!

回复
2020-10-9 14:54:57
wetcherry
wetcherry

李老师,鸿蒙内置了Android系统,是在鸿蒙架构的哪个层次实现的呢?在鸿蒙源码的目录结构中有体现么?另外,这样内置后,会不会让鸿蒙系统显得繁重了?

1
回复
2020-10-9 17:02:50
蒙娜丽宁
蒙娜丽宁 回复了 wetcherry
李老师,鸿蒙内置了Android系统,是在鸿蒙架构的哪个层次实现的呢?在鸿蒙源码的目录结构中有体现么?另外,这样内置后,会不会让鸿蒙系统显得繁重了?

应该哪一个层都会有,其实就是直接运行两套系统:鸿蒙和Android,然后面向用户层做一个统一的接口,如果是apk,就交给android,如果是hap,就交给鸿蒙。 由于这部分代码还没有开源,我也不太清楚具体如何做的,只能等到明年开源再看了。

回复
2020-10-9 19:28:18
IT教程分享
IT教程分享

华为真的是撒谎不打草稿.毫无做人的底线.

回复
2020-10-10 17:41:37
jordana
jordana 回复了 IT教程分享
华为真的是撒谎不打草稿.毫无做人的底线.

你有没有仔细看文章?

1
回复
2020-10-11 20:07:43
IT教程分享
IT教程分享 回复了 jordana
你有没有仔细看文章?

看完了.怎样?  华为自己说是全新的用什么 微内核的系统. 结果还是是核心用了安卓.    你想说什么 ? 想做李洪元第二吗?

回复
2020-10-12 11:58:44
蛋蛋玩鸿蒙
蛋蛋玩鸿蒙

厉害了,希望华为越来越好!

回复
2020-10-12 13:47:30
iBlackT
iBlackT

请问这个是电视机是华为智慧屏吗,系统是鸿蒙2.0吗?还有现在市场上能买到鸿蒙OS2.0的电视机吗?

回复
2020-12-4 12:34:53
kyletangcn
kyletangcn 回复了 IT教程分享
华为真的是撒谎不打草稿.毫无做人的底线.

底层还没开源,这么说维持过早。

如果不兼容android,何来的软件生态、开发者生态,即便强如微软,windows phone不是也没做起来么。

回复
2020-12-4 15:37:52
mb5dd175289e35a
mb5dd175289e35a 回复了 IT教程分享
华为真的是撒谎不打草稿.毫无做人的底线.

现在下结论,有点早吧

回复
2020-12-9 16:17:04
D未闻花名
D未闻花名

文中说:也就是说,使用Java和JavaScript可以开发出同样的HarmonyOS App。

问题是,JS开发的APP能在JS层调用相机,录音录像吗?JS层能跟JAVA层的FA进行通信交互吗?

回复
2020-12-23 15:38:30
AnBetter2021
AnBetter2021

同一个包名系统只能识别一个

回复
2021-3-3 19:21:03
鸿蒙潇儒瀚
鸿蒙潇儒瀚 回复了 IT教程分享
华为真的是撒谎不打草稿.毫无做人的底线.

白痴一样的评论

1
回复
2021-7-10 11:54:04
Der_带鱼
Der_带鱼

文中说的很清楚嘛:HarmonyOS其实内部包含了HarmonyOS和Android两部分。如果安装的是HAP(HarmonyOS的安装包,类似Android的apk),就会用HarmonyOS部分来运行,如果安装的是apk,就会用Android部分来运行。所以HarmonyOS本质上不是套壳Android,而是与Android并行,相当于HarmonyOS设备中同时运行了HarmonyOS和Android两个系统,而这一切,对于用户是透明的。

回复
2021-7-10 16:10:28
     
      回复了 鸿蒙潇儒瀚
白痴一样的评论

你又是哪来的F屋?

 

回复
2021-8-4 15:50:04
     
     

”如果安装的是HAP(HarmonyOS的安装包,类似Android的apk),就会用HarmonyOS部分来运行,如果安装的是apk,就会用Android部分来运行。”

笑死我了,真能吹,有解过hap看么?你可知道你们所写的所谓的AbilityPackage,AbilitySlice等鸿蒙组件最后实际还是会被套一层android的Application,Activity等安卓组件运行在android层上么?

回复
2021-8-4 15:56:34
     
      回复了      
”如果安装的是HAP(HarmonyOS的安装包,类似Android的apk),就会用HarmonyOS部分来运行,如果安装的是apk,就会用Android部分来运行。” 笑死我了,真能吹,有解过hap看么?你可知道你们所写的所谓的AbilityPackage,AbilitySlice等鸿蒙组件最后实际还是会被套一层android的Application,Activity等安卓组件运行在android层上么?

在应用层面,鸿蒙是完完全全的套壳安卓没得辩。当然没否定有鸿蒙在其他层面有自己的东西加进去,但这不足以说他不是套壳。

回复
2021-8-4 15:57:48
Whyalone
Whyalone 回复了      
在应用层面,鸿蒙是完完全全的套壳安卓没得辩。当然没否定有鸿蒙在其他层面有自己的东西加进去,但这不足以说他不是套壳。

别纠结套壳不套壳了,倒是用~起~来~啊~!

回复
2021-8-4 23:28:08
     
      回复了 Whyalone
别纠结套壳不套壳了,倒是用~起~来~啊~!

在开发了,苦于思索现有APP中android api 如何快速转换为鸿蒙API。

回复
2021-8-6 16:13:19
回复
    相关推荐