metadata.json 中的 "shell-versions" 变量究竟是如何工作的?

How does the "shell-versions" variable in metadata.json work, exactly?

我在 metadata.json 中看到了几种方法,有些只指定完整版本,例如“3.22”,而有些则更具体,例如“3.22.1”。我打开了一个问题,其中有“3.24”、“3.24.1”和“3.24.2”,但扩展在“3.24.3”中无法工作,直到我指定它。

有必要列出支持的所有特定 "point" 版本的 gnome-shell,或者仅当指定了至少一个 "point" 版本时 gnome-shell 才会关心?

从 GNOME 40 开始,每个稳定版本都是 1 的简单增量,奇数不再不稳定(例如 404142 ) 和次要版本将被忽略。

直到版本 3.38,版本检查有点复杂:

/**
 * versionCheck:
 * @required: an array of versions we're compatible with
 * @current: the version we have
 *
 * Check if a component is compatible for an extension.
 * @required is an array, and at least one version must match.
 * @current must be in the format <major>.<minor>.<point>.<micro>
 * <micro> is always ignored
 * <point> is ignored if <minor> is even (so you can target the
 * whole stable release)
 * <minor> and <major> must match
 * Each target version must be at least <major> and <minor>
 */