(本文阅读受众:软件开发;系统架构师;纯血鸿蒙使用者;本文为快评,未经仔细审阅)
小更新却大动干戈
购买nova 15 Ultra几天了,鸿蒙6升级得挺频繁。这本该是好事,表明其对系统的重视。但最近连续升级了两个几十MB的包,就有些似乎不太对劲。
比如今天突然收到的24.41MB的升级包,内容是“修复了部分场景下法定工作日闹钟响铃异常问题”。考虑到明天(2026-01-04)周日但要上班的情形,这个补丁还是得打。但是打的时候,手机需要重启,对用户的影响感知是很明显的。
从表现来看,一个比各种“小而美”手机应用还小的系统更新包,却反映出闹钟和鸿蒙系统底层如此的高耦合,不得不通过大动干戈的系统更新重启、而不是小修小补的应用更新的方式来更新,槽点有点多。
但这一点,和安卓走过的一段历史包袱非常相像。
安卓的历史包袱
如果对安卓早期系统十分熟悉的用户应该知道,早期的安卓(尤其是Android 4.3和之前的版本),其内置的Webview组件,也必须要通过手机厂商的系统补丁更新形式,来进行重启更新。
因此,当11年前——即2015年1月——谷歌表态不主动修复一个在Android 4.3及以下的Webview漏洞时,在当时引发了争议。因为这个Webview漏洞,在当时能影响当时60%的安卓用户(或近十亿客户),只有只有 Android 4.4和 Android 5.0用户是安全的【1】。但即使能修复,它也需要通过手机厂商推送,因为和安卓底层过于紧密耦合了。
(当年漏洞出现时的安卓份额,2015年1月)
在Android 5和该版本之后,Webview和安卓底层解绑,用户可通过谷歌官方应用商店Play Store自行更新,而无需劳烦手机厂商。但在当时,Android 5的市场份额甚至低到无法在谷歌的统计数据中显示出来。解决方法现在大家都看到了:等用户更新设备,时间会抚平一切。
(Android Studio上显示的安卓平台/API版本分布,2025年12月更新,可以看到4.X及以下版本份额终于可以忽略不计了)
软件设计的弯路
在国内,许多信创产品或者国产系统,在公开宣传或者私下推销的时候,不约而同地会在对比国外系统的环节中,强调自己是从头开发,没有历史包袱。
(2025-08-16,余承东关于鸿蒙和安卓对比的新闻)
在国外,许多使用新的编程语言,比如轰轰烈烈的Rust锈化重写软件新闻中,也总喜欢大喊抛弃旧语言的历史包袱,赶紧拥抱新语言新世界。
但所有的系统,都不是仅仅依靠设计、或换个语言就能运行的。当真正投入市场时,用户需求和反馈一定会逼迫软件架构做出妥协。而妥协的产物,说得难听点,就是屎山代码的堆积;说得好听点,则是背负上历史包袱。
在追求“低耦合、高内聚”的路上,没有一个系统能够逃脱软件工程要走的弯路,安卓如是,鸿蒙也是,操作系统如此,编程语言亦如此。
(上图摘自《系统架构设计师教程第二版》)
======
【1】Google Under Fire For Quietly Killing Critical Android Security Updates For Nearly One Billion, Thomas Brewster, Forbes, Jan 12, 2015, 04:36am EST, https://www.forbes.com/sites/thomasbrewster/2015/01/12/google-webview-updates-quietly-killed-for-most-androids/