开启辅助访问
 找回密码
 立即注册

鸿蒙2.0? 华为到底开源了什么

leonever 回答数20 浏览数645
在去年的8月份,华为PPT发布了鸿蒙操作系统,我根据华为分享的为数不多的几页PPT,写下了这篇文章:
在2020年的9月,华为发布了鸿蒙2.0的同时,终于开始开源了一部分代码。
在本文中,我将按照去年的脉络,对去年我的猜测做进一步的验证,并针对华为开源的代码进行初步的分析:
如何获得鸿蒙OS的源代码?

鸿蒙的开源代码均托管在OpenHarmony的Gitee账户上,大家可以在如下地址进行访问:
官方推荐的代码获取方式是直接下载已经打包好的源代码包;不过经过我的观察,鸿蒙跟Android一样,采用了repo来做多repo的代码组织,如果有Android开发环境的朋友,可以直接通过repo来获取最新的代码:
mkdir openharmony
cd openharmony
repo init -u https://openharmony.gitee.com/openharmony/manifest -b OpenHarmony-1.0
repo sync分布式软总线

在去年的分析中,我猜测分布式软总线中的极简协议是一台替代TCP/IP或者UDP/IP的三层协议。而所谓的应用框架指的是主要是在此基础上提供的一台SDK,用于局域网内的自发现、消息的单播、多播、广播
随着代码的开放,我们可以从这里看到,所谓的分布式软总线,就是在标准的COAP协议[1](一种针对嵌入式设备的应用层(七层)协议)之上实现了一些子协议,并在各个性能不同的计算平台上提供了相应的SDK(softbuskit和softbus_lite)。
所以基本与我的猜测一致(当然我没想到它只是个7层协议),不过我看不出来这个方案和Apple及Google使用的mDNS + DNS SD(aka Apple Bonjour)有什么显著的优势。毕竟,就算是嵌入式设备使用的TCPIP协议栈LwIP中,都已经内置了这两者的支持。
调度引擎

在华为开源的代码里面,针对两种不同级别的处理器提供了两个内核,分别是kernel_liteos_a和kernel_liteos_m,按照官方文档[2],它们分别针对的是ARM Cortex A系列处理器内核(通常用于AP[3],也就是手机、平板、电视机等的主处理器),以及ARM Cortex M系列处理器内核(通常用于MCU,也就是一些IoT设备的微控制器,以及AP中的Sensor Hub)。
这两者最本质的差别有两个,其一是内存容量的差别,使用Cortex A系列内核的处理器,通常具有256MB以上的内容(对于目前的旗舰手机,甚至会多达12GB);而Cortex M系列内核的处理器,通常只有几十到几百KB的内存。
其二是,Cortex A系列内核的处理器,通常具有MMU,而Cortex M系列内核的处理器,通常只有MPU;后者不具备内存虚拟化的能力。所以,这个限制对于内核的内存子系统的设计,以及进程/线程子系统的设计的影响是巨大的;让两者使用完全相同的code base是不经济的,所以华为选择了直接使用两个不同的repo来存放他们的代码。
这也可以直接从代码的结构中得到印证。比如liteos_m的kernel/base中,缺少vm目录。
架构图

在之前的文章中,我分析过鸿蒙1.0的架构。基本上可以认为鸿蒙1.0只是AOSP改名字而已,底层运行的或是Linux Kernel。
从这次鸿蒙开源出来的代码中,可以看到专门针对Cortex A系列的内核liteos_a。这说明华为正在走向原本ppt中所描述的鸿蒙2.0的蓝图,即把底层的内核换成华为自个的liteos的微内核。
对于这个技术选择,我认为需要辩证的看:

  • 从技术上说,这确实将整个操作系统的核心换成了完全自主知识产权的内核;
  • 从兼容性上来说,大家应该清楚,大量的App并不是单纯的依赖于Android的Java层框架,而是深度使用了JNI和Android NDK来提高性能,访问Java API无法访问的东西等等。而这些对于ABI的兼容性有非常高的要求,特别是libc的ABI兼容性以及syscall的ABI兼容性。(在Fuchsia中,解决这个问题的方案是,直接开了个虚拟机运行Android内核,orz)。
所以这个技术选择最终会导致怎样的结果,我们还需要拭目以待。
更多?

我也希望能够跟大家聊更多,但是就像华为在发布会上自个说的,目前开源的部分是针对内存128K~128M的设备的。它们主要是嵌入式的IoT设备、智能音箱、WiFi摄像头之类的东西。而针对更大内存容量的设备(也就是电视机、平板、手机等)的Harmony OS,预期是在明年4月开源。
所以目前能跟大家聊的内容是非常有限的,毕竟目前开源的部分,连OpenGL ES都不支持,更不用说Vulkan了。
这个进度实际上是要落后于去年PPT宣称的进度的(应该说是远远落后),所以跟全网的“欢呼雀跃”相比,我更多的是担忧。
总结

余总是个营销的高手,把一些很基本的技术,稍加包装就变成了“独家”,“领先”的“黑科技”。坦白的说,从技术视角是有一些言过其实的。
但反观整个开源出来的项目代码,从设计、到实现、到代码组织可以看到是非常扎实的一台项目。华为确实投入了很大的人力物力来做这件事情。可以看到团队的专业、野心,但一台操作系统的开发需要投入的资源和时间实在不是一朝一夕一家公司能够做好的,我们应该更有耐心。毕竟如Google这样强大的公司,在Fuchsia上投入了数百名顶尖的工程师,做到目前离第一台正式版本发布还有很远的距离。
后记

很多人,包括很多知友在分析了华为发布出来的应用开发环境,以及模拟器之后,发现了诸多Android的痕迹,就立马高潮了,说明明就是Android换皮,装什么国产OS。
但是从商业角度来说,这很可能是唯一的路径:其一是,如此规模的基础库,全部从头开发一遍的开销是任何一家企业不可接受的,就算让Google自个再来一次也是如此;其二是,当今既有的App对于这些接口和基础库的行为,是有非常强的依赖的(所以每次iOS和Android升级,都有一堆的App要重新做适配,发新版本),保证行为一致的最明智的做法就是直接使用AOSP的实现。
对于API重命名这件事情(比如把原本的android.*开头的包改成harmony.*)这件事情,我虽不是非常认同,但也明白其中可能存在的法律风险(可以看Oracle告Google侵犯Java API的版权)。
<hr/>一家之言,欢迎在评论中一起讨论。
参考


  • ^COAP协议 https://en.wikipedia.org/wiki/Constrained_Application_Protocol
  • ^内核子系统 https://gitee.com/openharmony/docs/blob/master/readme/%E5%86%85%E6%A0%B8%E5%AD%90%E7%B3%BB%E7%BB%9FREADME.md
  • ^Application Processor
使用道具 举报
| 来自北京
lovewhs | 来自广东
这才是专业的分析,真是受够了那些立场先行的人
回复
使用道具 举报
czcs | 未知
把换皮说的这么轻易脱俗,谷歌买了安卓才有了现在的安卓,其他公司只是换皮那市面强很多公司都可以做到!小米他完全可以做到他已经把安卓做到了极致!华为这样做你还觉得好?有损开发行业,抄袭不如自研!  国内当自强!
回复
使用道具 举报
mongolia | 来自北京
大家说的不就是【余总是个营销的高手,把一些很基本的技术,稍加包装就变成了“独家”,“领先”的“黑科技”。坦白的说,从技术视角是有一些言过其实的。】这事吗?改个语调就马上接受了?
回复
使用道具 举报
ccwwdd | 来自北京
余总是个营销的高手,把一些很基本的技术,稍加包装就变成了“独家”,“领先”的“黑科技”。坦白的说,从技术视角是有一些言过其实的。
————————————————————
我懂了( ̄∀ ̄)
回复
使用道具 举报
daiti | 未知
我发现中国操作系统方面的大拿都在知乎上,华为但凡能招揽一个半个绝不能今天这么狼狈
回复
使用道具 举报
xiejiait | 来自福建
鸿蒙是陈海波教授负责的,比知乎大V高到不知道哪里去了... 可以了解一下...
回复
使用道具 举报
sam1973 | 来自北京
先干为敬。先活下去,然后再说有损。就问你一句,特没普有损啥?微信,tt被禁有损啥?华为都被米国禁成这样了,还要怎么有损?
回复
使用道具 举报
rainslayer | 来自北京
不不不,虽然我看不懂你的文章,但我觉得你比他们都厉害
回复
使用道具 举报
dawis168 | 来自北京
其实毁就毁在他嘴上,如果低调的搞个os,然后低调的发布,不那么吹,发布后就能拿出实际的东西,估计黑的人会少很多。结果是他拿不出的时候就开发布会,然后接着吹秒安卓,秒ios,哎.... 不让人恶心也恶心了
回复
使用道具 举报
123下一页
快速回复
您需要登录后才可以回帖 登录 | 立即注册

当贝投影