众所周知,鸿蒙系统是一个跨平台的系统,支持电脑、手机、平板、智能穿戴等硬件设备。如果鸿蒙系统,同时支持所有的win应用、android应用,那么岂不是不用担心“生态”问题,实现“一统江湖”了吗?下文具体说一说。
鸿蒙系统如何兼容win应用软件?
应用软件能够在操作系统上运行,首先需要转换为二进制01机器码,而这些机器码是有固定格式的。
win系统下的exe文件格式为:PE(Portable Executable)。PE是win32环境自带的执行体文件格式,每个EXE文件的文件头结构如下图所示▼。
按理说,任何符合PE结构的可执行文件,也可以在非intel架构的CPU上运行,比如华为的麒麟处理器。但是,win应用软件会用到很多运行库、驱动软件,微软,包括这些硬件开发商、应用开发商是不会公开自己的代码,适配华为的麒麟处理器的。
可以这么说,鸿蒙系统理论上可以运行win应用软件,然而没有实现的可能性。
鸿蒙系统兼容android应用?
鸿蒙系统可以兼容android系统的所有应用,可以“借用”安卓系统的生态,有两点原因:
两者都是基于Linux的,运行机制大同小异;
鸿蒙系统可以通过虚拟机的方式兼容所有的安卓应用,也可以通过自家的“方舟编译器”直接将安卓应用打包成可执行的二进制代码,提高了运行效率。
我们看一下android操作系统的结构:
Linux内核:这是Android平台的基础,实现线程管理、内存管理等基本功能;
HAL硬件抽象层:包含多个库模块,每个模块实现特定的硬件功能,比如蓝牙、相机模块等;
Android运行库:这个是android系统的核心,包含了一个Dalvik虚拟机,所有的android应用运行在这个虚拟机基础上,这也是造成android应用执行效率低的原因之一;
应用层:这个就是所有的android应用了。
从上图来看,鸿蒙系统的运行库只要兼容安卓的apk结构,代替android操作系统的Dalvik虚拟机,就可以实现android应用的兼容。