目录:
在每个月初,Google发布每月Android安全公告,并开始向Pixel手机发送更新。 很高兴公司对正在发生的事情以及如何修复问题保持透明,即使您不是那种喜欢阅读源代码的人。
这些补丁在公开之前有很多工作要做,而且在涉及其他手机之前还有更多工作要做 - 如果有的话。 让我们来看看如何制作香肠,并尝试更好地理解为什么安全补丁的时间线有点模糊。
首先你修复Android
Android是一个复杂的野兽。 超过500万行代码,它可以帮助那些使移动产品运行的公司拥有一个完整的应用程序平台,包括访问Google Play和其他服务。 它不是可以原样使用的东西; 这些公司花了很多时间试图让Android定制合并到他们可能用来创建一个漂亮的同质化操作系统的其他软件中。
如果公司想要包含其服务,谷歌有一些关于如何做到这一点的规则,但制造商对最终产品的构建方式有很长的牵制。
此代码是安全补丁生效的地方。 有人,无论是安全研究人员还是普通的Joe,都会发现手机中存在一个可以用来减轻设备安全层的缺陷。 如果该缺陷不是OEM创建的,那么Android团队的任务是找出发生了什么,为什么会发生这种情况,以及如何以最少破坏性的方式解决它。
如果发现安全漏洞并且它是基本Android代码的一部分,Google必须修复它,然后将其发送给其他所有人。
通常,这个缺陷不是谷歌可以解决的问题。 与我们一样,Google无法访问制造高通或LG等硬件的公司的固件。 如果需要在硬件级别解决缺陷,那么供应一些使用的组件的公司很可能需要首先进行更改。 如果是这种情况,则会将这些更改转发给Google,以便它可以看到需要采取哪些措施才能在Android代码中容纳这些更改。
这些更改需要时间,尤其是涉及硬件供应商时。 对补丁中解决的每个缺陷都进行了修补和测试以及更多补丁和更多测试。 一旦谷歌确信他们有一个有效的安全漏洞修复程序,每个制作Android手机的公司都可以获得早期访问权限(至少在谷歌公布修补程序前30天),以便他们可以开始工作。
第二阶段
这是大部分工作的地方。 Google可能会自行编写和维护Android,但使用它的大部分设备都不是由Google制作的。 那些 - 像素手机 - 也包括在这里。 谷歌硬件是Android的客户,与三星或摩托罗拉相同。
移动行业的三星和LG对Android做了很多改变,在合并补丁的时候需要做很多工作。
所有这些公司一旦获得谷歌的新代码,就可以开展一些工作。 第一个 - 也可能是最重要的 - 部分是确定不需要补丁的哪个部分。 在一个公司可以自由忽略的每个补丁中都有很多东西。
例如,如果NVIDIA必须进行推送回Android的更改,那么没有三星手机需要该部分补丁。 一个更极端的例子是黑莓或三星已经以不同方式解决问题的变化。 找出所需内容和不需要内容可能非常耗时,尤其是当公司对操作系统的某些部分进行大量更改时。 谷歌调查指出,OEM正在发送的安全补丁没有解决他们应该拥有的一些问题,而这正是它所发现的。
并非每部手机都需要补丁的每个部分。
完成后,补丁的其余部分需要合并到供应商的自定义Android代码中,然后进行构建和测试。 如果补丁不能仅因为触及自定义代码正在使用或依赖的文件而应用,那么“构建和测试”部分会变得非常令人头痛。 我们也看到了很多。 无论何时修补蓝牙或Wi-Fi,无论是硬件还是其背后的软件,它都会触及由大型OEM改变的代码,这种代码制造出比“股票”Android更高级的操作系统。 OEM可以触及Android的很多部分。
一旦三星或其他供应商的工程师获得启动和运行的操作系统,就需要对其进行测试。 并测试了一些。 测试可能包括让所涉及的各个运营商的网络工程师,以及将谷歌和/或任何组件的制造商重新组合。 它必须是正确的。 向成千上万的手机发送的补丁可能会削弱运营商的网络,消耗每个用户的数据上限,甚至导致手机本身停止工作。 任何类似的东西都是不可接受的, 必须在它离开建筑物之前找到。
推出
让您的手机,谷歌和您的运营商共同努力的公司可以准备好大规模的无线更新。 如果您曾经看过用于下载修补程序的网址,您会发现网址中有“Google”。 这是因为手机内部可以获取和处理OTA更新的引擎正在查找补丁的特定位置。 它需要知道补丁是100%正确的并且由正确的数字签名签名。 完全下载补丁后,它将再次检查此项。
如果您是从运营商那里购买手机,它会在补丁的整个生命周期内提供足够的输入。
如果他们的名字在手机上,您的运营商可能会有一些关于何时以及谁可以下载补丁的规则。 像三星或LG这样的公司为每个运营商制作他们最受欢迎的型号的定制版本,这对于如何完成工作有很多的投入。 它应该是因为它的名字在盒子上。 这可能令人沮丧,但这是有道理的。 如果拥有三星Galaxy S8手机的匹兹堡(例如)的每个人都试图同时获取800MB的补丁,那么网络将会崩溃。 您的运营商将做任何需要做的事情,以保持网络的活力。
谷歌也对OTA推出提出了一些要求。 特定数量的用户将收到一个补丁,经过一段时间后,Google会确定这些用户是否有良好的体验或不良体验。 如果一切顺利,大量用户将在第二波中获得补丁。 在闸门打开之前,这会重复几次。 不希望等待最终测试的用户可以通过其设备设置手动下载修补程序。
轮到你的时候,你给手机开绿灯来抓取该文件,然后下载,然后你的手机就可以控制了。
在你的手中
补丁会下载到您的手机并验证为正确的东西。 较旧版本的Android有一个专用缓存,这是您存储的一部分,它已经被分割为诸如更新文件之类的东西; 只是暂时在手机上的东西。 使用Android无缝更新功能的手机(应该是销售时运行Android Nougat的大多数手机)将下载的文件“滑动”到所谓的插槽中。 在任何一种情况下,您都需要有足够的空间来提取和处理OTA文件。
具有旧版Android的手机可能具有在更新期间使用的专用缓存分区。 它的大小必须是您下载的OTA文件的2.5倍。
手机中的OTA更新程序软件是Android的一部分。 下载文件中的脚本告诉它如何查找需要更改的文件,并将这些文件复制到设备缓存或指定的插槽中。 然后,它会将手机上的原始文件与已下载的文件进行比较。 有些可能是简单的交换 - 从手机中取出文件X并将其删除,然后将其替换为OTA下载中的文件X. 其他不是完整文件,只包含小的特定更改。 手机中的更新程序和安装程序软件知道该怎么做。
Android中的许多文件,特别是应用程序和软件库,实际上是很多压缩成特殊存档的文件。 您可以获取APK文件并将其更改为.zip文件,然后使用Windows将其打开。 有时需要打开这些存档,并且需要将部分存档与为安全补丁下载的新版本进行交换。 这就是为什么你需要缓存分区中的工作空间 - 这就是提取这些文件的地方。
手机上的很多文件都是包含许多文件的档案 - 包括其他档案档案。 情况很复杂。
一旦处理了OTA更新中的每个文件并对系统文件的副本进行了更改,就可以使用它们运行系统了。 当手机处理您收到的OTA后要求您重新启动时会发生这种情况,因为通常需要修补文件但手机正在运行时正在使用这些文件。 您可能会看到一个屏幕,显示重新启动期间正在进行工作,或者您可能只看到Android徽标。 在任何一种情况下,都会检查文件,移动到位并再次检查。 旧文件保存在缓存中以防万一出现问题而您无法使用新文件启动。
剩下的就是为了确保所有内容仍然只是您喜欢的样子,并且您在手机设置中有更新的安全补丁版本日期。 现在您已准备好进行下一次更新!