iPhone的系统更新模式跟公有云有什么关系?

iPhone的版本管理是怎么做的?

Posted by Kyle on January 27, 2019

从iPhone说起

众所周知,在手机行业,苹果公司不同于其他公司最大的一点就是,苹果一年只发布一到两台手机,也就是俗称的旗舰机战略。

虽然2018年苹果破天荒的突破了这个数字,但也仅仅发布了三台手机而已。

这和其他几乎所有手机厂商赖以成名的机海战术形成了鲜明的对比。

机海战术的细分市场固然有其合理性和强大的生命力。

但是苹果在一年只发布一两台手机的情况下,单机型销量(除了最早期的一代、3G\3GS) 其他几乎都接近一亿台甚至iPhone6开始更高。

iPhone6

而且,每台iPhone都内置了几乎全球所有国家的语言,并且最重要的一点。

他们在系统更新时也是全球同步的。

我今天用我浅显的眼光,带大家思考,iPhone是如何做到全球十几亿(不含停止提供系统更新的)存量机型同步更新的。

以及这能对全球一朵云的架构,提供什么参考。

每款iPhone都是同一个型号吗?

首先要回答,不是,但是全球200多个国家与地区,也只有几个型号。

以最新一代iPhone XS Max为例,售版本只分A1921(美国、加拿大)、A2101(国际版)、A2102(日版)、A2104(国行、港澳)、以及一个中国移动定制版本A2103。

参见iPhone - View countries with supported LTE networks

版本是区分硬件的标志,只要版本相同,核心硬件一定相同(例如基带),固件也可以通刷。

(和系统底层非强相关的硬件或其他可能有不同、例如屏幕、例如6S一代有台积电跟三星分别代工的A9处理器。)

但是就算是相同硬件版本,不同国家与地区的在售机型仍然有一定程度的定制功能区别化。

例如国行阉割了FaceTime语音功能,低电量提示音无法关闭。

港版跟国行同型号,但是在XS以及XR这一代发布之前,港版一直都是只支持移动联通的双网,不支持电信的频段的。(也就是俗称的阉割频段)

日版的拍照快门声无法关闭。(以至于网上有各种各样如何关闭日版iPhone拍照声的问题和教程)

关闭日版拍照声

美版同型号的iphone有的是运营商的有锁机,有的是公开的无锁机。

其他国家的版本也有对应的支持网络频段的区别。

但是以上不同国家和地区发售的,只要是同型号的机型,固件跟硬件就是一样的,发布系统更新时也是全球同步更新,保证了良好的用户体验。

而同型号不同地区贩卖的机型,也不会因为系统更新而串了地区,例如我们没办法把港版刷成国行,虽然他们硬件是同型号

也就是说,苹果是在软件上做了不同的限制,来区隔不同国家与地区发售的iPhone机型的功能。这是怎么做到的呢?

原来在设置-通用-关于本机中,能够发现有一项叫做型号。国行尾数为CH、港版是ZP、美版是LL、德版是DN、台湾是TA、新加坡和马来西亚是ZA。

iPhone地区码

而iOS系统,正是通过这些地区码的区分,在同个安装包的前提下为不同地区发售的iPhone设置了不同的功能。

也就是说,iOS系统的安装包里内置了全球所有国家的不同的设置,而根据安装的iPhone的地区码,来选择性启用这些不同的设置或功能。

(暂时不知道这一步选择是在下载步骤做区隔,下载时就区分只下载本地区所需要的功能;还是不同型号都下载并安装全量包,只在启用上做区隔。)

跟全球一朵云的关系

现在公司的云不同运营商的版本之间差异仍然非常大。O某云是一个版本、T某云是一个版本、C某云是一个版本、自营云又是一个版本。

并且现在自营云比C某云版本新很多,但是市场份额却不如C某云,差点闹了笑话。

不同云之间接口也不完全一致。

这有点像三星的做法,同样在全球都卖的三星手机,虽然有国际版的版本,但是不同地区之间同型号的手机,硬件一样,系统却是不一样的。

例如三星基于安卓9.0的One UI就是在德国等几个国家率先推送的。不像iPhone能做到全球同步更新。

虽然定制化更强、更本土化,但是同样带来了庞大的后续运营成本。

导致三星手机系统更新慢、不同地区更新版本有先后造成用户体验不一致、手机支持更新年限短等问题(S系列旗舰机一般只更新两个安卓大版本,而最新的iOS12支持iPhone5S以后的所有手机)。

iOS12兼容机型

并且这和全球一朵云的构思还是有着不远的差距。

从iPhone更新系统的例子来看,有几点是我们需要去努力的。

1.iPhone在全球销售的硬件不完全一致,但是只区分了少数几个版本,这也利于后面系统版本的一致性。

但是和手机行业不同的是,PC跟服务器早已做到了模块化。

不同的CPU跟不同的主板都能刷上相同的系统,真要限制硬件完全统一,难度非常大。

甚至我不确定是不是在哪里看到过公司跟A某云做的一个比较,其中一个优点就是支持硬件种类更多。

那么,如果在操作系统或者某一层能够做到底层资源完全抽象,对于上层调用来说没有差别,也是可以的。

2.服务完全解耦,这也是公司现在正在努力的方向。

3.整合合营云和自营云的版本,往同一个系统、同一个版本、以开关形式选择性启用各自版本的功能的目标发展。

这应该也是公司正在努力的方向,虽然从现在来看难度仍然较大。

希望能有一天真的做到像iPhone的快门拍照声、FaceTime音频通话、网络频段、运营商定制等,完全通过地区码或其他形式来选择性开启一样。

有一个整合的系统全集,自营云和合营云的功能都是这个全集的子集,并且代码一致,可以通过开关不同功能来管理不同云之间的差异。

我们也知道,各国的法律不尽一致,各国各个运营商的要求也不尽相同,现在更有欧盟的GDPR拦在眼前。

做任何改变都要小心谨慎,牵一发而动全身。

但是这并不妨碍这作为前进的方向,毕竟有苹果老大哥成功的例子,活生生地摆在眼前。