华为跟 Android 说再见,解读鸿蒙应用全部虚拟机化

hi 大家好,我是 DHL。大厂程序员,在美团、快手、小米工作过。公众号:ByteCode,分享有用的原创文章,涉及鸿蒙、Android、Java、Kotlin、性能优化、大厂面经

自从华为在 2023 开发者大会上,宣布 HarmonyOS NEXT 开发者预览版本,不在兼容 Android 之后,腾讯、网易、美团、京东、字节等等大厂陆续宣布加入鸿蒙应用生态,随后金融、旅行、社交领域企业也陆续宣布加入鸿蒙生态。华为在适配工作上取得了重大进展。

近日有一个火爆的全网的消息,鸿蒙系统要开始全面脱离安卓系统了,未适配鸿蒙系统的应用将全部转成虚拟机。

全部转成虚拟机是什么意思?

我在之前的文章说过,鸿蒙脱离 Android 势在必行,但是短期内并不会和 Android 一刀切,因为生态的建立是需要时间积累的。

相比于自研新系统,最难的是生态的建立,而生态的建立就需要各个行业的人,为你的新系统开发软件,如果没有人为你的系统开发办公软件那就不能用于工作,如果没有人为你的系统开发游戏、音乐等等软件,那么就不能用于娱乐,一个既不能用于办公,也不能用于娱乐的操作系统,试问那个消费者会去使用。

曾经微软要开发一个不兼容的版本 window vista,结果因为不兼容大家都放弃,最后 vista 失败被迫放弃,后来的 win7、win8、win10 都是向下兼容,能运行旧版本程序。这里有个最重要的原因就是软件的生态。

因此生态是非常重要的,鸿蒙短期内是无法达到 Android 这种生态水平,那么怎么办呢,所以鸿蒙前期为了自身的发展,在设计的时候,采用的是一个双框架架构设计,既可以安装鸿蒙应用,也可以安装 Android 应用。

但是也不能一直处于兼容状态,所以鸿蒙开始了第二步,未适配鸿蒙系统的应用将全部转成虚拟机。

也就是说如果想在鸿蒙操作系统(HarmonyOS)中运行那些原本不兼容鸿蒙系统的应用程序。鸿蒙操作系统可能会采用一种虚拟机技术,类似于安卓系统中的 ART(Android Runtime)或者早期的 Dalvik 虚拟机,来允许那些未经修改的 Android 应用在鸿蒙系统上运行。这种虚拟机会提供一个兼容层,模拟 Android 系统的环境,从而使得原本设计为 Android 平台的应用能够在鸿蒙系统上执行。

我初步猜测,这个过程可能会经过以下步骤,具体实现细节需要等官方揭晓。

  • 应用兼容性检查:系统会检查安装的应用是否直接兼容鸿蒙操作系统
  • 转换为虚拟机应用:对于那些不兼容的应用,系统会将它们转换为可以在虚拟机中运行的形式
  • 虚拟机执行:应用在虚拟机中运行,虚拟机提供了必要的安卓运行时环境,使应用能够正常工作,就像在安卓系统中一样

这种方式使得用户可以在鸿蒙操作系统中使用广泛的 Android 应用,而不必等待应用开发者发布专门为鸿蒙系统优化的版本。这对于新操作系统的用户采纳率和生态系统的快速发展至关重要。

需要注意的是,虚拟机中运行的应用可能在性能上不如原生兼容的应用流畅,因为额外的兼容层可能会引入一些性能开销。

我想说的

鸿蒙目前还处于初期发展阶段,网上对鸿蒙问题的解答太少了,而我在学习过程中也遇到了不少问题,花了不少时间去分析。有兴趣的小伙伴,可以看一下这篇文章,列举了我遇到的问题,以及解决方案。

相比于自己去摸索,通过与大家的沟通交流,效率会提高很多。所以我建一个鸿蒙学习交流群,诚邀各位小伙伴一起来打造一个良好的学习氛围沟通群。想入群小伙伴可以私信我

全文到这里就结束了,感谢你的阅读,如果文章对你有帮助,欢迎在看、点赞、分享给身边的朋友,你的点赞是我持续更新的动力。


Hi 大家好,我是 DHL,在美团、快手、小米工作过。公众号:ByteCode ,分享有用的原创文章,涉及鸿蒙、Android、Java、Kotlin、性能优化、大厂面经,真诚推荐你关注我。


最新文章


开源新项目

  • 云同步编译工具(SyncKit),本地写代码,远程编译,欢迎前去查看 SyncKit

  • KtKit 小巧而实用,用 Kotlin 语言编写的工具库,欢迎前去查看 KtKit

  • 最全、最新的 AndroidX Jetpack 相关组件的实战项目以及相关组件原理分析文章,正在逐渐增加 Jetpack 新成员,仓库持续更新,欢迎前去查看 AndroidX-Jetpack-Practice

  • LeetCode / 剑指 offer,包含多种解题思路、时间复杂度、空间复杂度分析,在线阅读

相关推荐
小行星1256 分钟前
前端预览pdf文件流
前端·javascript·vue.js
小行星12513 分钟前
前端把dom页面转为pdf文件下载和弹窗预览
前端·javascript·vue.js·pdf
Lysun00122 分钟前
[less] Operation on an invalid type
前端·vue·less·sass·scss
J总裁的小芒果37 分钟前
Vue3 el-table 默认选中 传入的数组
前端·javascript·elementui·typescript
Lei_zhen9640 分钟前
记录一次electron-builder报错ENOENT: no such file or directory, rename xxxx的问题
前端·javascript·electron
咖喱鱼蛋42 分钟前
Electron一些概念理解
前端·javascript·electron
yqcoder44 分钟前
Vue3 + Vite + Electron + TS 项目构建
前端·javascript·vue.js
Dnelic-1 小时前
【单元测试】【Android】JUnit 4 和 JUnit 5 的差异记录
android·junit·单元测试·android studio·自学笔记
鑫宝Code1 小时前
【React】React Router:深入理解前端路由的工作原理
前端·react.js·前端框架
Mr_Xuhhh2 小时前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法