Android Framework | 更好,更快,更健壮的Android时区更新方式

图片

又到了一年一度我们要调整时钟的时候了!哦,等等,你的安卓设备是不是已经自动调整了?对于许多生活在各国的安卓用户来说,这可能并不奇怪。例如,在美国、欧盟和英国,政府已经有一段时间没有改变他们的时间立法,因此用户每天早上醒来都能看到准确的时间。

但是,当时间法律发生变化会发生什么呢?如果全球范围内看,政府可以并且确实经常改变他们的时间立法,有时甚至每年都会变化,而安卓设备必须跟上以支持我们的全球用户群。

为了执行某一地区的时间立法,安卓设备必须遵循一套编码规则。那么,这些规则是什么呢?让我们从为何需要这些规则开始说起。显然,洛杉矶的早上7点和伦敦的早上7点并不是同一时间。此外,如果你在伦敦想知道洛杉矶的时间,你就必须知道要减去多少小时,而这在一年之中是不固定的。因此,为了告诉当地时间(你的手表应该显示的时间),很方便有一个全球所有人都能同意的参考时钟。这个时钟被称为协调世界时(UTC)。伦敦冬季的当地时间与UTC相符,夏季则要在UTC基础上加一小时,通常称为UTC+1。对于洛杉矶,夏季当地时间是UTC-8(比UTC晚8小时,UTC偏移为-8小时),冬季则相应地是UTC-7。当一个地区从一个偏移量改变到另一个偏移量时,我们称之为“转换”。这些偏移量和规则的组合以及转换发生的时间(例如“三月的最后一个星期日”或“3月8日后的第一个星期日”)定义了一个时区。对于一些国家来说,时区规则可能非常简单,主要由它们选择的UTC偏移决定:“没有转换,我们不需要调整我们的时钟”。

政府可以决定改变某些地区的UTC偏移量,引入新的时区地区,或者修改夏令时转换发生的日期。当政府这样做时,每台安卓设备上的时区规则都需要更新,否则安卓设备将继续遵循旧规则,这可能导致向受影响地区的用户显示错误的当地时间。

安卓并不是唯一需要追踪这些信息的系统。幸运的是,有一个由IANA(因特网编号分配机构)[https://www.iana.org/time-zones] 支持并由一小群志愿者维护的数据库,被称为TZDB(时区数据库),它被用作大多数现代操作系统上的本地时间基础。TZDB 包含了安卓需要的大部分信息。

虽然没有固定的时间表,但通常 TZDB 每年发布 4-5 次新版本。安卓团队希望尽快发布影响其设备的更新。

这些变化是如何达到你的设备的呢?

  1. 政府签署法律/法令。
  2. 有人通知 IANA 这些变化
  3. 根据提前通知的时间以及其他国家宣布的变化,IANA 发布新的 TZDB 版本。
  4. 安卓团队将 TZDB 版本(以及我们从相关项目获取的少量额外信息和自行推导的信息)合并到我们的代码库中。
  5. 我们将这些更新推送到你的设备上。推送的方式取决于安卓设备的类型和年龄。 a. 许多移动安卓设备都受到谷歌的mainline[https://source.android.google.cn/docs/core/ota/modular-system?hl=zh-cn] 的支持,这意味着谷歌会直接向设备发送更新。 b. 一些设备由设备制造商处理,他们将安卓团队的源代码更新,并根据自己的更新计划发布到设备上。
    你可以看到,有相当多的步骤。申请、测试和发布一个更新可能需要数周的时间。而且不仅是安卓和其他类似的计算机操作系统需要采取行动。通常还有电信公司、银行、航空公司和软件公司必须对自己的系统和时间表进行调整。一个国家的公民需要知晓这些变化,这样他们就知道可以预期什么,特别是如果他们使用的是可能无法接收必要更新的老设备。这一切需要时间,如果处理不当可能会给无数人带来问题。一个变化造成的混乱程度通常取决于政府提供的立法的清晰度和通知期限。TZDB 的志愿者擅于发现变化,但如果政府直接通知 IANA,尤其是当不清楚确切的地区或现有法律受到影响时,那就更好了。不幸的是,最近许多时区变化的通知期限都只有一个月左右。安卓对于提供多少通知期限有一套建议。其他操作系统也有类似的建议。

安卓不断在发展。其中一个改进项目,“mainline”,是在安卓 10 中引入的,这在我们更新安卓操作系统的重要部分方面产生了很大的影响。它使我们能够通过谷歌 Play 直接传递选择的 AOSP 组件,使更新速度比完整的OTA更新更快,并减少了每个 OEM 需要做的工作的重复。

从一开始,时区规则就是主线中的一个组件,称为时区数据或 tzdata 模块[https://source.android.com/docs/core/ota/modular-system/timezone]

这种整合使我们能够比以前更快地对政府强制实施的时区变化做出反应。然而,直到 2023 年,tzdata 更新仍然和其他主线变化捆绑在一起,有时会导致测试复杂性和更新速度较慢。

在 2023 年,我们进一步投资了主线的基础设施,并将 tzdata 模块与其他组件分离。通过这种隔离,我们获得了对时区立法变化的快速反应能力,通常能够在已建立的发布周期之外向安卓用户发布更新。此外,这一变化意味着时区更新可以触及更多的安卓设备,确保你作为安卓用户总是看到正确的时间。

因此,虽然你的安卓手机可能无法恢复失去的睡眠时间,但你可以放心,它会显示准确的时间,这要感谢志愿者和安卓团队。

参考链接

https://source.android.com/docs/core/connect/time https://data.iana.org/time-zones/tz-link.html

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/414185.html

(0)
联系我们
联系我们
分享本页
返回顶部