从 Darwin/XNU 个版本中提取 macOS 版本名称

Extract macOS release name from Darwin/XNU versions

是否有任何方程式可以从相应的 darwin 版本或 xnu 版本中获取 macOS 版本 (10.X)(每个版本没有预定义的 table)

例如,在 macOS Mojave (10.14) 中我们有以下内容:

darwin version 18.0.0
xnu version 4903.200.249

在 macOS high sierra (10.13) 中我们有:

10.13.3: xnu-4570.41.2  darwin version 17.4.0   
10.13.2: xnu-4570.31.3  darwin version 17.3.0   
10.13.1: xnu-4570.20.62 darwin version 17.2.0
10.13:   xnu-4570.1.46  darwin version 17.0.0   

所以我推断达尔文版本中的主要编号在每个 OS 版本中是唯一的:

..
16->10.12,
17->10.13, 
18->10.14, 
..

我的假设是否正确?

是的,这对于主要版本号是正确的。即使 macOS 修订版没有,次要版本有时也会增加,反之亦然,例如 10.13.1 的情况,其中 darwin 次要版本为安全版本增加 1,再次为 10.13.1。

等式正确。要涵盖所有 *OS 变体,您将使用:

令 D = 达尔文版本

MacOS = 10.(D-4) TvOS = iOS = (D-6) 手表OS = (D - 13)

而且未成年人通常保持一致,除非如 pmdj 所述,有增量修复。

如果您想要确切的 MacOS(或 *OS 变体)的次要版本而不用猜测,它真正 "lives" 的唯一位置是 /System/Library/CoreServices/SystemVersion。列表。 ProductVersion 键(在 MacOS 中,ProductUserVisibleVersion 键是在 GUI 和其他地方报告的键。MacOS 版本号在 OS 中的任何地方都没有实际意义。