卓易通:鸿蒙Next系统的蜜糖还是毒药?

哈喽,我是老刘

最近很多人都在问鸿蒙next系统新上线的卓易通和出境易两款应用。

老刘分析了一下这个软件的一些细节,觉得还是蛮有意思的,我觉得可以从使用体验、底层原理和对鸿蒙生态的影响这三个角度来分析一下。

使用体验

性能

看到了一些测评,特别是有人直接就跑分的👍

总体来说从跑分来看性能是鸿蒙原生的93%,基本是容器的平均水平,性能损失不大。

但是其它方面的表现就比较糟糕了。

内存

这个Android运行时的容器本身运行需要8G左右内存。

所以没有16G内存的丐版手机,就不要想运行什么大程序了。

功耗

不少网友评价手机容易发烫,就是功耗高的表现。

其实这也很好理解,在一个系统上持续运行另一个系统的容器,同时又想做到性能没有大幅损失,就只能通过持续的高功耗来弥补了。

同时要注意,高内存占用和高功耗不仅仅影响容器内运行的Android应用,也会对原生应用造成影响。

原生应用的可用内存减少,cpu持续被容器占用,会出现使用时比较卡顿甚至异常等现象。

当然手机续航也会大幅下降。

用户体验

也有不少用户反馈bug较多。

我想这一方面和容器本身的兼容性有关,另一方面也和内存、功耗的问题有关。

在高功耗、内存吃紧的情况下很多手机App都会出现一些问题。

总体来说使用体验是能用,但是不好用

换句话说就是比较适合临时应个急,作为日常使用不推荐,除了bug还会造成续航的下降。

底层原理

前面我们提到整体的性能损失不大,由此也可验证不是采用的虚拟机方案。

但是其实这种技术方案也不完全算是很多人说的容器技术,我的理解是类似WSL2这样的介于容器和虚拟机之间的一种轻量级虚拟技术。

接下来我们把几种在一个系统上运行另一个系统应用的方案对比看一下就比较清晰了。

虚拟机

虚拟机是通过在系统中模拟一个完整的硬件环境来运行目标系统或应用程序。

假设是使用虚拟机来运行Android应用,那就是如下的结构。

运行Android应用时,虚拟机将完整的Android系统部署在虚拟的手机硬件之上,通过动态翻译将指令映射到鸿蒙系统的底层架构。

我们先来看一下一个普通Android App的运行架构

如果在一个虚拟机里面运行,则整体架构如下:

从架构上就可以看出来,虚拟机的优缺点都很明显。

优势

  1. 强隔离性:虚拟机通过独立的运行环境与宿主系统隔离,可以提供更高的安全性。
  2. 兼容性强:能够在宿主系统上原生支持几乎所有的Android应用,无需对应用进行修改。

劣势

  1. 性能开销:由于需要模拟硬件和运行时环境,虚拟机通常会带来较高的资源占用和性能损耗。
  2. 启动时间较长:虚拟机初始化过程复杂,启动速度相对较慢。

但是在卓易通这种场景中,我们不需要虚拟出一套不同的手机硬件,因为这样的开销太大了。

能否让虚拟系统和宿主系统共用一套硬件呢?

这种方案也是有的,就是轻量级虚拟化技术。

轻量级虚拟化

这种技术方案的典型代表是微软的Linux子系统,下面简称为WSL2。

简单来说,WSL2 在 Windows 上运行了一个 Linux 内核,但它不虚拟硬件。

WSL2 利用虚拟化技术(如 Hyper-V)提供内核隔离,同时通过与 Windows 系统的深度集成,消除了传统虚拟机与宿主系统之间的隔阂。例如,文件系统操作、网络共享和进程调用的性能和用户体验更加接近原生应用。

架构示意图如下:

它具有如下特点:

  1. 虚拟化但非硬件仿真
    • 使用轻量虚拟化运行 Linux 内核。
    • 不模拟硬件,而是直接利用宿主机的硬件资源。
  2. 高效的系统调用桥接
    • Linux 应用直接调用 Linux 内核,而 WSL2 的内核通过微软的接口与 Windows 通信。
    • 比传统虚拟机更高效,部分性能接近原生运行。
  3. 用户体验类似容器
    • 提供快速启动、轻量运行的体验。
    • 与 Windows 文件系统无缝交互,支持共享资源。

API兼容层

轻量级虚拟化方案的性能虽然比虚拟机要高很多,但是仍然有中间商。

Hyper-V向上提供的仍然是虚拟的cpu和内存,并且Linux内核本身也会占用大量的cpu和内存资源。

那能否直接在宿主运行时上运行另一个系统的应用呢?

这种方案也是有的。

典型的代表就是Linux上的Wine,可以直接在Linux上运行windows的exe程序。

Wine(Wine Is Not an Emulator)是一个兼容层,它允许在 Linux、macOS 或其他 Unix-like 系统上运行 Windows 程序。

它通过直接将 Windows API 调用转换为对应平台的本地系统调用,从而让 Windows 应用程序能够在非 Windows 系统上原生运行。

架构如下:

Wine 的优点

  1. 较高的性能
    • 无虚拟化开销:Wine 直接将 Windows API 调用转换为宿主操作系统的调用,因此它没有虚拟机或容器那样的额外性能开销。这使得 Wine 运行 Windows 应用程序时通常具有接近原生 Windows 系统的性能。
    • 运行效率:由于没有模拟硬件或操作系统,Wine 的效率通常比虚拟机(如 VMware 或 VirtualBox)和 WSL2 更高。
  2. 较小的资源消耗
    • 低资源占用:Wine 不需要像虚拟机那样模拟整个硬件环境,也不需要运行完整的操作系统。因此,它消耗的资源(如 CPU 和内存)相对较少,特别适用于资源有限的系统。
    • 启动速度快:Wine 启动 Windows 应用程序的速度比虚拟机或 WSL2 要快,因为它不需要启动一个完整的虚拟操作系统。

Wine的缺点

  1. 兼容性问题
    • 并非所有 Windows 应用程序都兼容:Wine 并不是完美的 Windows 兼容层,并非所有 Windows 应用程序都能顺利运行。尽管 Wine 对许多应用有良好的兼容性,但一些复杂的应用(尤其是需要底层硬件访问的程序,如一些游戏或专业软件)可能无法正常工作。
    • 有限的驱动和 API 支持:Wine 并不完全实现 Windows 的所有 API,它仅支持大多数常见的 Windows 调用。对于一些高级功能或特殊硬件支持(如 DirectX 或某些图形加速功能),Wine 的支持可能不足。
  2. 图形和多媒体支持较弱
    • 图形性能问题:尽管 Wine 支持 DirectX 和 OpenGL 的映射,但与 Windows 原生运行时相比,图形性能可能较差,尤其是在图形密集型应用程序(如 3D 游戏、图形设计软件等)上。Wine 的 DirectX 到 OpenGL 转换可能会影响渲染性能。
  3. 有限的硬件加速支持:Wine 不能直接访问硬件加速功能(如 GPU 加速),因此在需要高度图形渲染的应用程序中,它的表现可能不如 Windows 原生环境。

卓易通的方案

前面介绍了目前主流的跨平台运行App的方案,那么本文的主角卓易通采用的是哪一种呢?

卓易通采用了华为自家的iSulad容器。

事实上卓易通技术方案和前面介绍的WSL2比较类似。

可以看到,因为鸿蒙内核兼容Linux ABI(应用程序二进制接口),而Android内核又是基于Linux内核修改的。

所以可以直接在鸿蒙内核上跑一个定制的Android 运行时。

当然这里没有完整的Android内核功能,所以前面说的一些兼容bug也有可能是这个原因导致的。

可能很多不是从事Android开发的同学对这个运行时没有什么概念,来看下面这幅图:

图中用红色框起来的部分都是本文提到的Android运行时的内容。

或者我们可以这么理解,一个Android App能运行起来,这里面的大部分内容都需要。

所以也就能理解,为啥只是把卓易通跑起来就需要大约8G的内存了吧?

而这里面有很多东西是需要常驻后台,实时响应用户及APP请求的,这也是为什么卓易通会造成持续的功耗和发热。

前面我们介绍了想在一个系统上运行另一个系统的应用都有哪些方案。

并且基于此介绍了卓易通的技术方案的特点。

相信到这里大家对卓易通到底是啥东西有一定的了解了。

那么接下来我们来看看推出卓易通和出境易两款应用,通过虚拟化方案兼容Android生态后对鸿蒙生态会有哪些可能的影响?

蜜糖还是毒药?

妥协

鸿蒙目前声称有1.5万应用。

这些应用相对于其对应的Android版本来说,有多少比例的功能看看微信就大概能知道。

而即便不考虑功能的覆盖率,1.5万的数量对于用户来说还是太少了,完全无法支撑日常的使用。

下图是2023年的数据,这个数据中还不包含大量没有上架应用商店的App。

以我自己为例,老刘手机上安装了很多开源或者开发工具配套App,这些应用大多都没有上架应用商店。

这里面的原因就不多说了😮‍💨

总之想支撑大量用户日常使用,没有足够基数的应用数量是不行的。

所以兼容Android应用,让运行鸿蒙 next系统的手机至少能满足日常的使用,就是一个不得不做的妥协。

副作用

本来对于公司或者团队来说,现在的形式不缩减人手就不错了,还要额外增加一个鸿蒙开发的成本?

除非可以看到明确的收益,比如足够大的用户数量,否则是没有动力去开发的。

现在有了卓易通可能开发的动力就更小了。

这让我想起来当年黑莓手机也能兼容Android应用,最后自身生态也没有发展起来。

这里还不得不提一个迷之操作:

纯血鸿蒙上架的应用卓易通里面无法安装,而出境易则只能安装白名单内的应用。

相当于我好不容易开发了一个鸿蒙版App,但是因为人手不足功能一时不全,现在用户还没法用我的Android版。

那我干脆就不开发鸿蒙版好了,这样用户至少还能用一下完整功能的版本。

所以这个决策就给人一种不得不妥协又放不开的感觉。

鸿蒙生态的未来

老刘作为一个在一线的开发者,我做过架构师也带团队,所以我一直以来都很关注成本问题。

当前的形式下,很多公司的客户端团队Android和ios都只剩一个人了。

即使还保留建制的团队,再增加一个鸿蒙开发组也很难。

所以想要让鸿蒙生态快速增长,最有效的办法就是大力发展Flutter这样的跨平台框架在鸿蒙上的兼容性。

如果一个团队、一套代码可以同时开发Android、iOS和鸿蒙三套系统,并且都能提供原生级的用户体验,那是不是前面的问题都可以有效的解决呢?

目前据我所知有不少基于Flutter鸿蒙定制版本的应用已经上架了。

这里也希望基于鸿蒙系统的Flutter生态能快速健全起来。

总结

本文介绍了纯血鸿蒙版本卓易通和出境易两款应用中运行Android App的体验和运行原理。

同时分析了在这个虚拟环境下运行Android应用对于鸿蒙生态的一些看法。

个人观点Flutter这样的跨平台框架才是鸿蒙生态快速增长的关键。

如果看到这里的同学有学习Flutter的兴趣,欢迎联系老刘,我们互相学习。

点击免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。

可以作为Flutter学习的知识地图。

覆盖90%开发场景的《Flutter开发手册》icon-default.png?t=O83Ahttps://mp.weixin.qq.com/s?__biz=MzkxMDMzNTM0Mw==&mid=2247483665&idx=1&sn=56aec9504da3ffad5797e703c12c51f6&chksm=c12c4d11f65bc40767956e534bd4b6fa71cbc2b8f8980294b6db7582672809c966e13cbbed25#rd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/491092.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

规则引擎drools(一)-技术要点

本文是规则引擎的第一篇,首先介绍规则引擎的技术要点,系列后续文章以本文为大纲,详细分析各个技术要点 1. 事实 事实是规则的依据,来源于业务,或是业务实体,或是多个业务实体的汇集; 2. 项目 描…

HarmonyOS学习 --- Mac电脑获取手机UDID

一,手机打开开发者选项 1,打开“设置 > 关于本机”,连续点击7次版本号,打开开发者选项。 2,打开“USB调试”。 二,配置环境变量 获取OpenHarmony SDK 安装路径 /Users/admin/Library/OpenHarmony/Sdk/10…

从 Router 到 Navigation:HarmonyOS 路由框架的全面升级与迁移指南

在本教程中,我们深入探讨了 Router 和 Navigation 在 HarmonyOS 中的用法差异及如何从 Router 切换到 Navigation 的方法。重点涵盖了页面跳转、转场动画、生命周期管理以及跨包路由的实现。 页面结构对比 Router 页面结构 每个页面需要使用 Entry 注解。 页面需要…

项目二十三:电阻测量(需要简单的外围检测电路,将电阻转换为电压)测量100,1k,4.7k,10k,20k的电阻阻值,由数码管显示。要求测试误差 <10%

资料查找: 01 方案选择 使用单片机测量电阻有多种方法,以下是一些常见的方法及其原理: 串联分压法(ADC) 原理:根据串联电路的分压原理,通过测量已知电阻和待测电阻上的电压,计算出…

C++ ——— const 修饰的对象如何正确调用函数

目录 前言 const 修饰的对象调用函数 const 修饰的对象如何正确调用函数 前言 在上一章完善了日期类函数 C ——— 完善日期类-CSDN博客 接下来要讲解的 const 修饰对象就拿日期类举例 const 修饰的对象调用函数 代码演示: const Data d1(2024, 12, 15);Dat…

nacos 配置动态更新-笔记

本文属于b站图灵课堂springcloud笔记系列。讲得好还不要钱,值得推荐。 官方解释:nacos配置中心实时刷新的原理是什么? | Nacos 官网 专家官方解答 : Nacos配置中心实时刷新的原理基于以下几个核心步骤与机制,这些信息…

第100+33步 ChatGPT学习:时间序列EMD-ARIMA-LSTM模型

基于Python 3.9版本演示 一、写在前面 上一节,我们学了经验模态分解(Empirical Mode Decomposition,EMD)。 如同结尾所说,“那么,做这些分解有什么作用呢?有大佬基于这些分解出来的序列分别作…

Docker创建一个mongodb实例,并用springboot连接 mongodb进行读写文件

一、通过Docker 进行运行一个 mongodb实例 1、拉取镜像 docker pull mongo:5.0.5 2、创建 mongodb容器实例 docker run -d --name mongodb2 \-e MONGO_INITDB_ROOT_USERNAMEsalaryMongo \-e MONGO_INITDB_ROOT_PASSWORD123456 \-p 27017:27017 \mongo:5.0.5 3、进入容器&am…

12-2周 周总结

上周主要工作在英语六级,其它暂无进展 新的一周任务安排如下: ① 读完四篇重要文献论文 ② 搭建完云平台 ③ 整理小论文雏形 ④ 学习侧线系统代码 ⑤ 复习应用数理统计 前半部分 ⑥ springspringboot源码部分完结

云计算HCIP-OpenStack04

书接上回: 云计算HCIP-OpenStack03-CSDN博客 12.Nova计算管理 Nova作为OpenStack的核心服务,最重要的功能就是提供对于计算资源的管理。 计算资源的管理就包含了已封装的资源和未封装的资源。已封装的资源就包含了虚拟机、容器。未封装的资源就是物理机提…

【蓝桥杯选拔赛真题93】Scratch青蛙过河 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 Scratch青蛙过河 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 Scr…

Elasticsearch 7.x入门学习-Spring Data Elasticsearch框架

1 Spring Data框架 Spring Data 是一个用于简化数据库、非关系型数据库、索引库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持 map-reduce 框架和云计算数据服务。 Spring Data 可以极大的简化 JPA的写法,…

OpenCV实验篇:识别图片颜色并绘制轮廓

第三篇:识别图片颜色并绘制轮廓 1. 实验原理 颜色识别的原理: 颜色在图像处理中通常使用 HSV 空间来表示。 HSV 空间是基于人类视觉系统的一种颜色模型,其中: H(Hue):色调,表示颜色…

MySql5.7安装、配置最新版

网上有很多的安装教程,但是有很多同学找不到历史安装包,而且官网变动比较大,我就直接给安装包了,下载 这个是安装包msi下载,可以参考下面的 MySQL详细安装教程,关于msi版和zip版详解,Windows …

ISP算法之坏点校正DPC(二):Verilog硬件实现与仿真

DPC的算法讲解和MATLAB仿真参考上一节: ISP算法之坏点校正DPC(一):MATLAB仿真验证-CSDN博客 本节讲解Verilog的硬件实现与仿真 行缓存设计 DPC算法是基于窗口邻域的像素级别算法,因此需要对实时到来的视频流进行行缓存,行缓存…

UE5制作倒计时功能

设置画布和文本 文本绑定 格式化时间 转到事件图表,计算时间,时间结束后面的事件可以按自己需求写 进入关卡蓝图,添加倒计时UI

在Spring Boot中的实现国际化(i18n)

1.什么是国际化(i18n)? 国际化(Internationalization,简称i18n)是指在软件应用中支持多种语言和文化的能力。通过国际化,应用可以根据用户的语言和地区设置,动态地显示不同的文本内…

大模型的构建与部署(3)——数据标注

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl1. 数据标注的重要性 1.1 增强数据可解释性 数据标注通过为原始数据添加标签或注释,显著增强了数据的可解释性。在机器学习和深度学习领域,模型的训练依赖于大量带标签的数据。这些标签不仅帮助…

【考前预习】4.计算机网络—网络层

往期推荐 【考前预习】3.计算机网络—数据链路层-CSDN博客 【考前预习】2.计算机网络—物理层-CSDN博客 【考前预习】1.计算机网络概述-CSDN博客 目录 1.网络层概述 2.网络层提供的两种服务 3.分类编址的IPV4 4.无分类编址的IPV4—CIDR 5.IPV4地址应用规划 5.1使用定长子…

需求管理(尊享版)

需求管理 由于需求是正在构建的系统必须符合的事务,而且符合某些需求决定了项目的成功或失败,因此找出需求是什么,将它们记下来,进行组织,并在发生变化时对它们进行追踪,这些活动都是有意义的。 需求管理…