跳到主要内容

iOS 最低支持版本怎么定?2026 年 App 最低支持版本选择

iOS 最低支持版本,2026 年新开的 App 一般定 iOS 16 或 iOS 17,iOS 15 以下不必考虑。按 Apple 系统占比、自己的用户数据、核心 API 和依赖库要求三者取最高,附各版本最老机型和主流框架最低要求。

iOS 最低支持版本怎么定?2026 年新开的 App 一般定在 iOS 16 或 iOS 17,iOS 15 只在用户里还有不少旧机型时才保留,iOS 15 以下不必考虑。具体做法是看三样东西:Apple 公布的系统占比、你自己 App 的用户数据、核心 API 和依赖库要求的最低版本,取三者里最高的那个。下面附各版本支持的最老机型和主流框架的最低要求,Apple 规则截至 2026 年 10 月。

Apple 公布的 iOS 系统占比是多少?

Apple 在 App Store 设备使用情况页面公布各系统的占比,按某一天在 App Store 有过交易的设备统计。截至 2026 年 10 月,页面上最新的一次统计日期是 2026 年 6 月 7 日。

统计范围 已在最新大版本上的比例
所有 iPhone 79% 在 iOS 26
近四年发布的 iPhone 86% 在 iOS 26
所有 iPad 68% 在 iPadOS 26
近四年发布的 iPad 79% 在 iPadOS 26

这组数字只告诉你「最新版本占多少」,剩下的 21% 分布在 iOS 18 及更早的各版本,Apple 没有逐版拆开。这 21% 里有一部分是 iPhone XS、XR 这类已经装不了 iOS 26 的机型,见下一节的表。

用这组数据时注意两点。它统计的是全球 App Store 活跃设备,你的用户群可能偏老(例如面向中老年人、二线城市、企业采购的旧机)或偏新(例如面向开发者、摄影爱好者)。另外,iOS 27 在 2026 年 9 月发布,下一次更新的数字会变成 iOS 27 的占比。

怎么用自己的用户数据定最低支持版本?

已经上线的 App,以自己的数据为准,它比任何全网统计都准。

  • 统计或崩溃分析 SDK。大多数统计和崩溃分析工具都能按系统版本分组,看最近 30 天的活跃用户分布。
  • 服务端日志。App 请求接口时在 User-Agent 或请求头里带上系统版本,按日活去重后统计。
  • 按收入加权。付费用户和免费用户的设备分布可能不同。如果 iOS 15 的用户占 3%,但贡献的订阅收入接近零,砍掉的代价就很小。

一个常用的判断线是:某个版本及以下的活跃用户加起来不到 2% 到 5%,就可以考虑在下一个大版本里放弃它。还没上线的新 App,直接用上一节 Apple 的数字。

常用 API 需要的最低 iOS 版本是多少?

部署目标低于某个 API 的引入版本,编译器会报 is only available in iOS 17.0 or newer,只能用 if #available 包起来,在老系统上另写一套或者隐藏这个功能。下表是常见能力的最低版本,取自 iOS SDK 里的可用性标注。

能力 框架 最低 iOS
App 内购买新接口 StoreKit 2 15
Swift Charts 图表 Charts 16
快捷指令与 Siri 动作 App Intents 16
实时活动与灵动岛 ActivityKit 16.1
本地数据库 SwiftData 17
可交互的小组件按钮 SwiftUI Button(intent:) 17
功能提示气泡 TipKit 17
设备端大模型 Foundation Models 26

SwiftUI 各版本能用的界面能力另有一张更细的表,见 SwiftUI 还是 UIKit。如果 App 的核心卖点就是某个新能力,比如实时活动或 SwiftData,最低版本直接定到它要求的版本,比在每个调用点写判断省事得多。

不是核心功能的,可以保留低版本,只在新系统上打开这个功能。

 1import SwiftUI
 2import TipKit
 3
 4@available(iOS 17.0, *)
 5struct NotificationTip: Tip {
 6    var title: Text { Text("打开通知") }
 7    var message: Text? { Text("到货提醒会第一时间推送给你") }
 8}
 9
10struct SettingsView: View {
11    var body: some View {
12        List {
13            if #available(iOS 17.0, *) {
14                TipView(NotificationTip())
15            }
16            Toggle("到货提醒", isOn: .constant(true))
17        }
18    }
19}
20
21func configureTips() {
22    if #available(iOS 17.0, *) {
23        try? Tips.configure()
24    }
25}

这段代码在部署目标 iOS 15、Swift 5 和 Swift 6 语言模式下都能编译通过。iOS 15、16 的用户看不到提示气泡,其他功能照常。

各 iOS 版本最老支持哪款 iPhone?

最低版本定在哪一版,就等于放弃了装不上这一版的机型。下表来自 Apple 官方的 iPhone 兼容机型列表。

iOS 版本 支持的最老 iPhone 和上一版相比去掉的机型
iOS 15 iPhone 6s、6s Plus、iPhone SE(第 1 代) 与 iOS 14 相同
iOS 16 iPhone 8、8 Plus、iPhone X、iPhone SE(第 2 代) iPhone 6s、7 系列、SE(第 1 代)
iOS 17 iPhone XR、XS、XS Max iPhone 8、8 Plus、iPhone X
iOS 18 iPhone XR、XS、XS Max 与 iOS 17 相同
iOS 26 iPhone 11 系列、iPhone SE(第 2 代) iPhone XR、XS、XS Max
iOS 27 iPhone 11 系列、iPhone SE(第 2 代) 与 iOS 26 相同

来源:iOS 15、iOS 16、iOS 17、iOS 18 的 iPhone 使用手册「支持的机型」页,以及 iOS 27 页面的兼容设备列表。iOS 18 和 iOS 27 没有去掉任何 iPhone,所以最低版本定在 iOS 17 和 iOS 18 覆盖的机型一样,定在 iOS 26 和 iOS 27 覆盖的机型也一样。

由此可以看出一个取舍点:最低版本定在 iOS 17 或 iOS 18,仍能照顾到 2018 年的 iPhone XR、XS;定在 iOS 26,这三款就装不上了。

Apple 对上传 App 的最低版本有什么要求?

最低版本还受 Apple 规则约束。截至 2026 年 10 月,Upcoming requirements 里和版本有关的两条如下。

要求 生效日期 内容
SDK 最低版本 2026 年 4 月 28 日 上传的 App 必须用 Xcode 26 或更高、iOS 26 SDK 构建
最低部署目标 2026 年 9 月 9 日 上传的 iOS 和 iPadOS App 部署目标必须是 iOS 13 或更高

iOS 13 只是上传的底线。Apple 的 Xcode 支持页写明,Xcode 26 和 Xcode 27 支持上传的部署目标范围都从 iOS 15 开始。所以实际能选的最低版本是 iOS 15。

SDK 版本和部署目标是两回事。SDK 决定你能调用哪些接口,部署目标决定 App 能装在哪些系统上。用 iOS 27 SDK 构建、部署目标设成 iOS 16 是正常的组合。

Flutter、React Native、Expo 要求的最低支持版本是多少?

用跨平台框架或大型第三方 SDK 时,你的最低版本不能低于它们的要求。截至 2026 年 10 月,各官方文档写明的版本如下。

框架 / SDK 版本 最低 iOS 来源
Flutter 3.47 15 Supported deployment platforms
React Native 0.76 起 15.1 React Native 社区公告
Expo SDK 56、57、58 16.4 Expo SDK 版本表
Firebase Apple SDK 13.0.0 15 Firebase iOS 版本说明

以上是框架本身的要求,你用到的插件、Pod 可能要求更高。最终的最低版本取所有依赖里最高的那个。Flutter 插件把版本提上去导致 pod install 失败的情况,见 Flutter iOS 编译常见错误。用 Expo 的,最低版本至少是 16.4。

提高最低支持版本会影响现有用户吗?

把最低版本从 iOS 15 提到 iOS 17,提交的新版本只能在 iOS 17 及以上安装。对系统低于 iOS 17 的用户,影响如下。

  • 已经装好的旧版本继续能用。App 不会被删除,也不会被强制停用。
  • 收不到新版本。之后发布的功能和修复都到不了他们手上。
  • 新用户可能装不上。旧系统上的 App Store 有时会提示下载与该系统兼容的最后一个旧版本,这多见于以前下载过这个 App 的 Apple 账户。Apple 没有给开发者正式承诺这项行为,不要把它当成兼容方案。
  • 服务端要兼容旧版本。旧版本 App 还在调你的接口,接口改字段、下线旧接口前,先确认旧版本的用户量,或者在旧版本里给出升级提示。

提高最低版本前,做三件事:

  1. 用统计数据算出会受影响的用户比例。
  2. 在最后一个支持旧系统的版本里,把已知的严重问题修完,它会在旧设备上存在很长时间。
  3. 在 App 内或更新说明里告诉用户,新版本需要的系统版本。

在 KXBuild 里怎么修改部署目标?

在 Windows、Linux、macOS 上用 KXBuild 时,KXBuild 视图里右键 target,选「KXBuild: 编辑目标设置」,在 General 页 Deployment 分组的 iOS Deployment Target 里改,按 Ctrl+S 保存。它对应构建设置 IPHONEOS_DEPLOYMENT_TARGET,见工程设置。内置模板的部署目标是 iOS 15,见内置模板。

也可以用命令行改。

1kxbuild project add-setting -k IPHONEOS_DEPLOYMENT_TARGET -v 16.0 -t MyApp -P .\MyApp.xcodeproj

工程用 CocoaPods 的,把 Podfile 里的 platform :ios 改成同一个值,再重新 pod install,两处不一致时依赖可能按旧版本编译。改完重新构建一次,编译器会把所有高于新部署目标的 API 调用都检查一遍,确认新的 iOS 最低支持版本下没有漏掉的 if #available。

常见问题

一般定在 iOS 16 或 iOS 17。按 Apple 2026 年 6 月 7 日的统计,79% 的 iPhone 已在 iOS 26;最低版本定在 iOS 17 仍能覆盖 iPhone XR、XS。用 Expo 的至少是 16.4,用到 SwiftData 的至少是 17。

Apple 要求的最低部署目标是多少?

截至 2026 年 10 月,自 2026 年 9 月 9 日起上传的 iOS App 部署目标必须是 iOS 13 或更高。Xcode 26 和 27 支持的部署目标从 iOS 15 开始,所以实际可选的最低版本是 iOS 15。

提高最低支持版本后,老系统用户的 App 还能用吗?

能用。已安装的旧版本不会被删除,只是收不到新版本。新用户在旧系统上可能装不上,App Store 有时会提示下载最后一个兼容版本,但 Apple 没有向开发者承诺这项行为。

iOS 27 支持哪些 iPhone?

按 Apple 的兼容列表,iOS 27 支持 iPhone 11 系列、iPhone SE(第 2 代)及之后的机型,和 iOS 26 相同。iPhone XR、XS、XS Max 最高只能升到 iOS 18。

部署目标和 SDK 版本有什么区别?

SDK 版本决定构建时能调用哪些接口,Apple 要求用 iOS 26 及以上的 SDK 构建。部署目标决定 App 能安装的最低系统版本,可以比 SDK 低很多,例如用 iOS 27 SDK 构建、部署目标设为 iOS 16。