立省万元,HUAWEI DevEco Studio 分布式模拟器体验

网友投稿 586 2022-05-30

儿童节的第二天是什么日子?呃!-- 是鸿蒙的生日呀!是的,在 2021年06月02日正式发布了HarmonyOS。让我印象比较深刻的是HarmonyOS的分布式能力,苦于没有真机吧,我也一直没有深入地去了解分布式能力背后的技术实现。直到DevEco Studio 上线了分布式模拟器(Super device)……

广而告之

在2021年06月02日,HarmonyOS 发布的当天,DevEco Studio也发布了支持远程分布式模拟器功能的新版本,尽管目前还是实验特性,我觉得对于没有设备的开发者来说,简直比618钜惠更钜惠!

官方网站: https://www.harmonyos.com/

操作文档:使用分布式模拟器运行应用

「注意事项:使用分布式模拟器前,请不要连接安卓设备!!!」

儿童节的第二天是什么日子?呃!-- 是鸿蒙的生日呀!是的,在 2021年06月02日正式发布了HarmonyOS。让我印象比较深刻的是HarmonyOS的分布式能力,苦于没有真机吧,我也一直没有深入地去了解分布式能力背后的技术实现。直到DevEco Studio 上线了分布式模拟器(Super device)……

广而告之

在2021年06月02日,HarmonyOS 发布的当天,DevEco Studio也发布了支持远程分布式模拟器功能的新版本,尽管目前还是实验特性,我觉得对于没有设备的开发者来说,简直比618钜惠更钜惠!

官方网站: https://www.harmonyos.com/

操作文档:使用分布式模拟器运行应用

「注意事项:使用分布式模拟器前,请不要连接安卓设备!!!」

DevEco Studio升级

如果您使用的旧版DevEco Studio,请升级到最新版本。当然,如果您还没有安装DevEco Studio,那么恭喜您,您一定不会遇到我踩过的坑!

我在升级DevEco Studio之后,遇到了远程模拟器无法开启的问题,后来经过重新安装SDK解决了!

问题的截图如下:

重新安装 SDK得以解决:

当前我的DevEco Studio版本:

体验分布式模拟器

首先,我们需要开启分布式模拟器的功能。我们进到编辑器的实验特性设置,开启相应的能力,主要是勾选「Enable Super Device」:

再进到模拟器设备管理就能看到远程的分布式模拟器了:

目前支持 「手机+手机」 以及 「手机 + 平板」。

如果此时您想体验分布式能力,我们可以根据模板新建支持分布式的模板,比如「Video Player Ability」:

或者直接获取 Codelab 的代码:

git clone https://gitee.com/openharmony/codelabs/

其中以Distributed开头的都是分布式能力的应用。比如分布式邮件应用、分布式地图应用、分布式视频应用、分布式游戏,涵盖了多种场景,也方便大家拓展创意。

我这里以分布式邮件应用为例。分布式邮件应用极大方便了我们对邮件的编辑,比如鸿蒙A设备上写邮件想要用到鸿蒙B设备的文件作为附件,我们可以将应用从A设备流转到B设备,从而使得邮件应用能够直接使用B设备的文件作为附件。

我们先启动分布式模拟器,本次我使用的是「手机+平板」:

接着,我们可以直接选择 super app 进行分布式应用的运行:

此时值得注意的有几点:

此时千万不要连接安卓设备!!!

立省万元,HUAWEI DevEco Studio 分布式模拟器体验

此时千万不要连接安卓设备!!!

分布式模拟器暂时不太稳定,如果遇到有设备黑屏,请关掉远程模拟器重新再开

分布式模拟器暂时不太稳定,如果遇到有设备黑屏,请关掉远程模拟器重新再开

如果我连接了安卓设备会怎样?

duang……duang……duang!会没法选择设备!!!

当我把安卓设备一拔掉就立马恢复正常:

(别问我为什么,我也一脸问号,期待评论区的解答)

啥也不说,先运行:

好家伙,我直接好家伙,成功了!

直接就是分布式能力的体验,看好了,我要流转了~:

duang……duang……duang……

就问你,牛B不牛B?

最后,我们看看核心的代码实现:

public class MainAbility extends Ability implements IAbilityContinuation { ... @Override public void onCompleteContinuation(int code) {} @Override public boolean onRestoreData(IntentParams params) { return true; } @Override public boolean onSaveData(IntentParams params) { return true; } @Override public boolean onStartContinuation() { return true; } } public class MailEditSlice extends AbilitySlice implements IAbilityContinuation { ... @Override public boolean onStartContinuation() { LogUtil.info(TAG, "is start continue"); return true; } @Override public boolean onSaveData(IntentParams params) { ... LogUtil.info(TAG, "begin onSaveData:" + mailData); ... LogUtil.info(TAG, "end onSaveData"); return true; } @Override public boolean onRestoreData(IntentParams params) { LogUtil.info(TAG, "begin onRestoreData"); ... LogUtil.info(TAG, "end onRestoreData, mail data: " + cachedMailData); return true; } @Override public void onCompleteContinuation(int i) { LogUtil.info(TAG, "onCompleteContinuation"); terminateAbility(); } }

结语

似乎发现了这个省钱秘诀,您 Get 到了吗?拥抱鸿蒙,拥抱未来!One as all, all as one!

分布式

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java--Servlet MultipartRequest实现上传文件
下一篇:基于vite2+electron13+elementPlus跨端仿mac osx桌面管理
相关文章