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

分析了200W行开源鸿蒙源码后,我发现…

瘋子拿把刀 回答数20 浏览数980
作者:阿拉神农
OpenHarmony 2.0 于 2021 年 6 月 2 号开源,第一时间下载了代码,做了一些分析。HarmonyOS 2 发布,看了直播后,感觉很激动。

这里分享一些感受,主要是汇总了 OpenHarmony 2.0 和 HarmonyOS 发布会一些我比较感兴趣的东西。
第一次看我文章的小伙伴可以关注一下@Android超人,每天更新各种技术干货,分享更多最热程序员圈内事。
OpenHarmony 2.0 的初步情况

此次开源的版本就叫 OpenHarmony 2.0。以后也不再区分 L2、L3、L4 这样的。该版本可在所有大小设备上使用。
此次开源没有 Java 程序的支持,也就是不支持 Android。没有 Android 的东西,也不支持 Java 应用。
下图是代码文件夹:

第一时间对代码量进行了统计。我算的比较粗,用的统计软件也是我十年前写《深入理解 Android》几本书时用的了。

不含 kernel、third_party(包括 device/hisilicon/third_party 也挪出去),所有我认识的源码文件共包含有效代码行数 1912976,接近 200w 行。
而归属 third_party+device/hisilicon/third_party 的代码行数为 7607742(不考虑 Html/html)。

所以,1912976/9520718=20%。鸿蒙自个开发的代码占全部源代码的 20%。不要小看这个,按之前的网上说法,AOSP 里谷歌写的代码才占了 15%。
当然,以上代码总量没计算 Linux Kernel,那玩意光自个就有近 1300 多万行代码。
Codelab 里的分布式场景介绍

华为开发者官网里开源了二十多个 Demo,我们第一时间整理了其中和分布式有关的 Demo 如下:

所有 Demo 入口地址在:
https://developer.huawei.com/consumer/cn/codelabsPortal/index
以上总结可供老板、做决策的领导、想方案的产品经理看。
HarmonyOS 2.0发布会中一些有意思的信息

接下来说 HarmonyOS 2.0 发布会。头天晚上看完后,第二天又看了回看,把一些细节给摸清楚了。
①超级终端,分布式等
全栈解耦:一套代码,满足各种硬件要求。这一条在这部分提得很少,后面讲鸿蒙桌面的时候提得多。
设备互联:基于软总线技术。场景有:多机位模式:一台手机可以看多个摄像头。如下图所示:

协同办公:手机,平板,PC 协同。
统一控制中心:所有设备的控制,状态显示都集中在手机上,就好像它们是一台设备一样。
做了一台统一的 UI/UE 入口——卡片:省事用户使用。其使用场景有“可以选择音乐输出到任何链接上的耳机,音箱"。

多设备构成超级终端:用户操作体验增强:卡片里展示超级终端,可被链接的设备悬浮显示。拖拽即可完成手机与其他设备的链接。
另外,几个设备协同是有排斥关系的。如下面右图。蓝色是室外音箱,对角的是室内音箱。当室内音箱被协同后,室外音箱会被排除出去。
这一点只是想说明,华为考虑得比较周到,它把设备协同中出现的设备之间冲突情况也考虑进来。另外,手表,pad,手机都可以运行这个控制中心。

多设备协同的一台有意思的场景是”手机播放音乐,音箱和手机协同后,声音从音箱出。“
还有一台场景是看视频:手机和电视机机协同后,手机的视频转到电视机播放。手机和耳机协同后,电视机机声音从耳机播放。这里应该或是有场景的判断。手机是控制,电视机机是播放源。
虽然是在手机上对耳机进行了协同,但实际上是把让电视机机的声音转到耳机去输出。(至少效果是这样,技术实现不清楚是通过手机中转的音频数据或是耳机和电视机进行了蓝牙匹配以及传输)
这里,王博士提到了两个关键技术,值得重视:

  • 应用场景为多设备间的音画同步软时钟同步
  • 无线传输时的抗干扰算法
接着,介绍了一台手机和 PAD,以及手机和 PC 的协同,马上看一下:
手机和 pad 协同:pad 和手机协同后,pad 可省事访问手机上的照片。如下图所示:

手机和 PC 协同:手机变成 PC 上的一台盘符。PC 需要安装一台插件。类似 MTP 那样的,只不过改成无线传输了。
Harmony Connect:畅联。多设备间的通话,语音,视频。
智能家电:碰一碰配网,碰一碰展示设备的智能功能。

②鸿蒙桌面
解决一次开发多端部署的问题。目前看解决办法和快应用比较像,呈现形式为卡片,不需要安装。
意思是不需要用户去应用市场下载和安装,是不是类似微信小程序,快应用?技术上不是特别确定,但感觉小程序,卡片这种模式越来越流行了。
鸿蒙桌面这里提到了两个关键技术:

  • 分布式编程框架:就是原来提到的分布式软总线,分布式任务调度,分布式数据管理等。
  • 原子化服务:不好描述是指什么。但展现形式是卡片。


有一台应用场景是跨设备流转:手机和 pad 搭配成超级终端后,手机能看到 pad 上的任务。比如下面这样:

手机上的任务能拖到 pad 上去执行。示例是把 wps 从手机拖到 pad。pad 上启动并展示了 wps。其展示内容和之前在手机上编辑的一样。
初步技术判断:需要 app 支持,就是把手机上该 app 的执行的信息。先同步到大屏上对应的 app 里。期待更多应用适配鸿蒙!
其他一些吓人的技术

这里就不截图了,比如全栈优化、动态空间管理, 全新自研图形栈,多设备协同验证。
这些都是很有价值的关键点。值得大家关注。以后代码要是开源,我们再第一时间分析。
对鸿蒙OS 的理解

首先,OpenHarmony 是不含 Android,所以,大家不必纠结 OpenHarmony 是不是 Android 套壳,目前连 Java 都跑不起来。
不过,我觉得是个机会,读了《深入理解 Android Java 虚拟机 ART》一书的几千个朋友里,哪怕有 10 个人能在 ART 基础上改一改,OpenHarmony 跑 Java 程序不是指什么难题。
而 HarmonyOS 是看做 OpenHarmony 的厂商定制版。为了消费者考虑,现阶段兼容 Android 是一种务实的选择。随着 OpenHarmony 的生态完善,逐步替代 Android 也不是不可能。
另外,正如我上篇文章《三分天下有其一,鸿蒙 OS 全面介绍》所说,鸿蒙的目标是星辰大海。
不要老盯着目前这些所谓的“问题”,从战略高度看,即使鬼子不逼我们,我们也得走这一条路。华为在服务端有 openEuler,终端有鸿蒙,对大家来说不是件好事吗?
最后

之前就有小伙伴问到:“Android开发要不要学鸿蒙?”“鸿蒙未来前景如何样?”“有鸿蒙开发的资料吗?”,这边正好也整理了一些鸿蒙开发的资料,如果大家有需要,可以直接私信我【鸿蒙】免费领取

后续也将整理 Fuchsia 开发的相关资料,希望可以帮助到大家~
在这里我再额外分享一份由多位大佬亲自收录整理的Android学习PDF+架构视频+面试文档+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料
这些都是我目前闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来面试取得一份不错的答卷。
当然,你也可以拿去查漏补缺,提升自身的竞争力。
如果你有需要的话,只需私信我【进阶】或直接点击下方小卡片即可免费获取
使用道具 举报
| 未知
弟5季 | 来自北京
提醒下,aosp里谷歌提交量占56%,提交占总代码行数的94%以上

你提的那个说法反过来还差不多,aosp里不是谷歌的代码大概能有15%
回复
使用道具 举报
alexmix | 来自北京
那你是某果的托吧。
回复
使用道具 举报
1ljjxff | 来自江苏
你资料里怎么那么多0啊。  教教我怎么才能做到,强迫症患者谢谢你了。
回复
使用道具 举报
薛耀民 | 来自北京
不知道是不是邓凡平大佬本人?3年前开始做Android驱动开发,就是看你的书入门,讲的非常详细,今天遇到本人了哈哈哈
回复
使用道具 举报
行星 | 来自北京
别人剖析Android源码的书都写了几本了你说别人是托哈哈哈哈
回复
使用道具 举报
tsingphone | 来自云南
[捂脸]不是本人,是转载大佬的
回复
使用道具 举报
oqZJWKxj | 来自北京
希望那些说作者不客观,小粉红的。把论据拿出来,指出文章的错误,这样也比较有信服力。不然不就是口嗨?脸都肿了还嘴硬:“跟我观点不一样的我管你对不对都是假的不可信。”
回复
使用道具 举报
aileenhao | 未知
https://www.zhihu.com/answer/1761790668

他这个aosp数据应该没问题,谷歌94.1%的changeset number和98.6%的changeset lines,可以自己跑脚本验证

安卓开发大佬居然不知道谷歌的代码贡献,反而要听信网上说的不到15%

这么深信不疑,这不到15%的数据来源是来自华为吗?
回复
使用道具 举报
q7e3a88888 | 来自北京
https://www.zhihu.com/answer/1761790668

别人不仅放数据,还给脚本随便验证

作者说谷歌代码不到15%才是不知道哪来的
回复
使用道具 举报
123下一页
快速回复
您需要登录后才可以回帖 登录 | 立即注册

当贝投影