背景
纯血鸿蒙OS Next系统最近出现了两款热门应用:出境易、卓易通,其功能是:让你在出境后可以方便安装到各种Android应用。
发生了什么?
「出境易」这款应用可以在纯血鸿蒙OS NEXT里直接安装&运行Android应用!
纯血鸿蒙官方声称:「不支持运行Android应用」!
于是:
- 很多正在努力开发、兼容纯血鸿蒙应用的开发者都在议论:是不是可以停鸿蒙开发、继续写回Android了?
- 也有很多粉丝后台私信Carson,问:目前继续学鸿蒙开发到底还有没意义?
本文意图
今天Carson来带大家扒扒「出境易」、「卓易通」到底是怎么能在纯血鸿蒙OS NEXT里运行Android应用的。具体包括:「出境易」、「卓易通」这两款Android应用
- 在纯血鸿蒙系统里运行的底层支持是什么?
- 在纯血鸿蒙系统里的运行环境是什么?
- 「出境易」、「卓易通」本质是什么?
- 在「出境易」、「卓易通」上的Android应用性能、体验如何?
问题1:在纯血鸿蒙系统里运行的底层支持是什么?
- 无论黑科技有多 “黑”,总需要底层给与相关支持才有运行的可能。
- 在初次安装「出境易」、「卓易通」时需下载一个环境,抓包&解包可得到:
其中最为关键的文件:anco_hmos.img,从字面解释来看:
- anco:AndroidCompatible = 安卓兼容
- hmos:HarmonyOS = 鸿蒙OS系统
- 整体看,即**「鸿蒙OS系统里的安卓兼容」**
实际上,这其实是一个安卓镜像文件,是一个嵌入到鸿蒙OS系统层面的安卓运行环境(类似虚拟机的作用,但实际不是虚拟机)。
其实是类似wsl技术,即Windows Subsystem for Linux = Windows的Linux子系统,能让开发者在Windows操作系统中直接运行Linux环境,而无需任何虚拟机。
所以,要在纯血鸿蒙OS 上安装「出境易」、「卓易通」不仅需要下载很大的安卓镜像资源包,还需要重启系统,因为「出境易」和 「卓易通」是单独的“运行环境”。
值得一提的是:
- 因为本身鸿蒙OS内核就兼容了Linux ABI(应用程序二进制接口),即鸿蒙OS内核本身就可以运行为Linux设计的应用。
- 所以,虽然这是一个安卓镜像,但这个属于鸿蒙的安卓镜像并没有包含Linux 内核,只是包含运行时(Runtime)部分。 以下是鸿蒙内核架构图:
问题2:在纯血鸿蒙系统里的运行环境是什么?
那么,这类Android应用到底是运行在什么环境上的呢?打开「出境易」内的app后,通过执行shell ps -ef会出现以下进程:
- 即其运行环境是:通过lxc-start命令启动了一个基于iSulad的容器的进程。
- iSulad 是华为自研的容器引擎,是一个非常通用的容器引擎,具有轻、快、 易、灵的特点。以下是其架构图:
iSulad官网介绍:www.openeuler.org/zh/other/pr…
问题3:「出境易」、「卓易通」本质是什么?
二者的功能都是:让你在出境后可以方便安装到各种app。听起来是不是有点类似国内的应用商店?
- 实际上,二者在鸿蒙next商店下载的是一层壳,负责与纯血鸿蒙OS进行权限交互(图片、文件IO等)
- 本体也是Android应用的apk,即出境易.apk、卓易通.apk。拿出来也是可以在Android手机上安装的。(如下图)
除此以外,「出境易」还含有一个「文件共享.apk」、「卓易通」还有一个「搜应用.apk」、「文件共享.apk」。
这里值得一提的是,两个“应用商店”可搜到的应用原理不同:
- 出境易:白名单方式,即只有与其合作的Android应用可以安装;
- 卓易通:黑名单方式,即只有纯血鸿蒙OS上架的应用不可以安装;
下面附上视频:纯血鸿蒙OS 「出境易」、「卓易通」安装Android应用实机演示
性能如何?
既然能跑了,那么用户体验如何呢?网友们已经开始跑分了:
- 测试环境:麒麟9000s;
- 结论:单核心正常跑分1000,目前「出境易」是930分左右,效率是93%;
- 分析:上面提到其底层支持是类似wsl的技术,同时运行环境是采用华为自研的iSulad 容器引擎的方式,并非所谓的虚拟机环境。这种嵌入方式可以使得安卓应用能够在鸿蒙系统上运行,但又不会占用过多的资源或影响系统的稳定性;
- 结合业界常见容器水平93%左右,华为的iSulad容器达到了业界水平,可理解为:GPU性能几乎无损。
但是对于内存使用就不太友好了,容器本身内存占用极大,基本一个容器进程就是8GB,随便开两个应用12GB就没了。 同时结合网上使用的评价:手机容易发烫(功耗高)、应用Bug较多等等,可以总结为:以这种方式在纯血鸿蒙OS上运行的Android应用 「能用」,但是「不好用」,与原生体验还是存在很大差距。
结论
- 从技术角度 分析:基于anco_hmos,采用类似wsl的方式同时结合iSulad容器引擎,使得在纯血鸿蒙OS上运行Android应用成为了板上钉钉的现实。
- 从性能角度 实践:在CPU性能可认为几乎无损的情况下,内存跟功耗问题短时间内还是无法解决;
- 从用户体验 观察:应用Bug较多,结合性能内存问题,目前暂时仅处于一个**「能用」**的状态。
基于上述分析 & 问题表现,在纯血鸿蒙OS上运行Android应用在国内大范围使用短时间内几乎不可能,更多的是在一些小众、边缘、尝试探索的场景,比如一些使用频率较低的小众app、尝试出海境外的场景(如本文提到的「出境易」等)。
最后
如何看待这次在纯血鸿蒙OS上运行Android应用的事件呢?评论区留言你的看法!
参考文章:
评论记录:
回复评论: