This content originally appeared on DEV Community and was authored by Ting
在发布我们的 SDK 时,一个时常需要考虑的问题:我们的新版本 SDK 应该支持哪些“版本”?
这里的“版本”指代很多的东西,比如:
- 哪些型号的硬件,如 Intel vs Apple M 或者有没有 LiDAR 和 GPS 的设备
- 最低的可以用于开发的 macOS 版本
- 最低的可部署的 iOS 版本
- 最低可用于开发的 Swift 编译器以及 Swift API 对应的版本,如 4.3,5.0,6.0 等等
- ……
作为苹果开发者很幸运:苹果公司和 macOS 已经尽量流线化整条产品线,作为苹果开发者毋需过多关注产品的兼容性——想想过去的 Windows 开发者要一直后向兼容到 Windows95,或者 Android 开发者不仅要兼容到 Android 4.0 还要在各种奇形怪状、性能高低的设备上测试,就庆幸自己手上的活儿已经足够简单;但发布时需要考虑的版本矩阵、排列组合,倒也并非一目了然。
苹果官方文档在这个页面上列出了对应的版本匹配,以方便专业开发者更好地厘清版本号的关联:https://developer.apple.com/support/xcode/
对于我们 SDK 而言,大体上的策略是每年 iOS 升级为版本 n,则兼容 n, n - 1, n - 2 三个版本。而 Xcode 基本目前也是一年一个大版本号,我们也就秉承着“新的 major 版本 Xcode n.0 发布后的我们 SDK 的第一次更新,升级至要求当前 Xcode n.0 大版本”这样的策略。
这几乎已经足够简单明了,但还是有个小的不足——
由于 Xcode 每年发布一个 major 大版本后 (Xcode 16.0),通常有四到五次 minor 小版本的更新 (Xcode 16.1 - Xcode 16.4),这就要求我们随时跟进 Xcode 更新,确保新的工具链依旧能开发、编译 SDK。同时,还要确保支持的最低版本 Xcode,不会因为 SDK 误用新引入的功能,而无法依赖引用它。因此,团队里几乎每一个开发者,都要安装至少三个版本的 Xcode:
- Minimum requirement version, e.g., Xcode 16.0 (16A242d)
- Current released version, e.g. Xcode 16.3 (16E140)
- Next beta version, e.g., Xcode 16.4 Beta (16F1t) (Before WWDC) or Xcode 26.0 Beta (17A5241e) (after WWDC)
有时,因为切换 Xcode 版本失误,会有不兼容的 API 符号溜进代码里面。好在有重重把关,总有人能在发布前测试发现这样的问题,确保发布的 SDK 不会在某些我们号称支持的版本上不能用。
然而,还是有点儿后怕——如果版本号的问题从 SDE 和 DevOps 眼皮底下都溜过去,最终被用户碰到,也算事故了。除了给每一台部署和测试的机器都装上三个版本的 Xcode,留一堆各种版本 iOS 的测试机以外,还能有什么更好更灵活的办法,来质检版本号呢?🤔
This content originally appeared on DEV Community and was authored by Ting

Ting | Sciencx (2025-06-17T22:20:21+00:00) Xcode 版本与部署目标版本?. Retrieved from https://www.scien.cx/2025/06/17/xcode-%e7%89%88%e6%9c%ac%e4%b8%8e%e9%83%a8%e7%bd%b2%e7%9b%ae%e6%a0%87%e7%89%88%e6%9c%ac%ef%bc%9f/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.