Alvis 发表于 2024-12-7 19:20:19

鸿蒙 OS Next 支持运行 Android 应用了(转载备份)

原帖转自微信公众号:https://mp.weixin.qq.com/s/Kq8PTH82cfIG_J7OcJJ4RA

几个小时前,Harmony OS Next 5.0 上架了一个名为“出境易”的应用,通过这个应用,可以运行不兼容原生鸿蒙 OS Next 的 Android 应用。

很多网友对其技术原理感到好奇,但手里没有相关的设备,不敢妄言。不过我可以大胆猜测一下,它的原理应该与我曾经开发的“两仪”类似。

应用商店显示,上架此应用的公司为“湖南穹隆科技有限公司”,在天眼查上查询,它的联系方式与公司法人与“湖南小算科技信息有限公司“一致。

而 VMOS 是一款 Android 系统上运行 Android 系统的虚拟机应用,两仪的运行原理与其一致。

两仪的运行原理并不复杂,其核心技术分为三部分:

1. 对 POSIX API 的兼容层;对于 Android 系统来说,这是天然兼容的。对其他系统来说,POSIX 兼容也很成熟了,鸿蒙 OS Next 自然也能做到。
2. ELF loader;在 Android 系统上这也很自然,不过 Android 10 以后禁止了 W^X,因此也需要自己 load ELF;鸿蒙 OS Next 可能需要在 kernel 加个 binfmt_misc 类似机制,如果它兼容 Linux 内核,那这一步也可省略。
3. OpenGL / vulkan 的转译层;OpenGL 指令序列化的相关技术也很成熟,不过要解决 GPU 对象在显存间共享的问题,否则顶多做到 40 FPS;两仪的最初版本非常卡,就是因为图像都是序列化传输的;后面虽然支持了 GPU 直通,但也耗尽了我所有的心力。

虽然还有很多其他的工作要做,不过那些都是体力活。所以从原理上讲,在应用层运行起一个 Android 系统在技术上其实并没有太大的阻碍,不过我不确定是否任何一个普通的鸿蒙应用都有权限做到如此,特别是对 Linux 内核兼容层的访问权限。



两年前,我曾与鸿蒙生态的朋友有过短暂的交流,当时对方在寻找鸿蒙系统的虚拟机技术方案;但由于投入周期太长,最终我们放弃了合作。今天看到相关的技术方案落地,万分感概。

作为在开源合作和全球化环境下成长起来的技术人,曾很难理解鸿蒙的决定;但在 Linus 可以因为莫须有的原因踢掉俄罗斯开发者的今天,这样的选择似乎又显得很自然。或许我们应该少一点讥笑与嘲讽,多一点理解和祝福吧。
页: [1]
查看完整版本: 鸿蒙 OS Next 支持运行 Android 应用了(转载备份)