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

胡琦 发表于 2021/06/07 14:03:35 2021/06/07
【摘要】 618钜惠,劲省万元!分布式模拟器,您值得拥有!

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

广而告之

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

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 进行分布式应用的运行:

此时值得注意的有几点:

    1. 此时千万不要连接安卓设备!!!
    1. 分布式模拟器暂时不太稳定,如果遇到有设备黑屏,请关掉远程模拟器重新再开

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

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!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。