社区编辑申请
注册/登录
牛掰了!鸿蒙与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

鸿蒙

2020-11-05 10:05:25

App

2019-07-10 14:25:59

Android鸿蒙华为

2019-11-19 09:31:15

操作系统Android 华为

2020-09-11 10:27:07

鸿蒙安卓操作系统

2021-06-02 09:36:25

华为MatePad Pro鸿蒙系统

2021-06-03 10:16:49

华为鸿蒙开发

2020-09-24 14:47:24

鸿蒙安卓操作系统

2021-05-28 10:14:51

鸿蒙操作系统HarmonyOS鸿蒙社区

2020-12-29 11:51:16

鸿蒙HarmonyOS华为手机

2021-01-06 11:21:56

鸿蒙HarmonyOS应用开发

2019-07-01 09:58:05

鸿蒙系统华为

2020-12-24 12:01:16

2020-12-03 10:05:07

鸿蒙OS

2019-07-15 09:45:00

华为鸿蒙开发

2020-12-25 11:11:48

鸿蒙HarmonyOS应用开发

2021-05-10 12:55:34

开发者技能工具

2019-06-27 09:05:29

操作系统Android 华为

2020-12-10 09:48:15

鸿蒙Linux开发

2021-01-14 12:06:22

鸿蒙HarmonyOSAI应用

同话题下的热门内容

Java 服务 Docker 容器化优秀实践程序员不得不知道的 API 接口常识TestOps完全手册:工作流、生命周期、团队和流程11个 ES2022(ES13)中惊人的 JavaScript 新特性不要在 Python 中使用循环,这些方法其实更棒!使用 Vite 和 TypeScript 带你从零打造一个属于自己的 Vue3 组件库你需要知道的TypeScript高级类型Hooks时代,如何写出高质量的react和vue组件?

编辑推荐

太厉害了,终于有人能把TCP/IP协议讲的明明白白了!牛人5次面试腾讯不成功的经验HBase原理–所有Region切分的细节都在这里了Javascript如何监听页面刷新和关闭事件如何搭建一个HTTPS服务端
我收藏的内容
点赞
收藏

51CTO技术栈公众号