部署目标是什么意思?

What does deployment target mean?

这是我假设的一个非常简单的问题。谁能告诉我部署目标是什么意思。如果我选择 IOS 10,是否意味着只有 iOS 10 的用户才能下载该应用程序。选择较低的部署目标不好吗?另外,继续部署目标,不建议 运行 在较低的部署目标上。

假设您已将最低部署目标设置为 iOS 9。 这意味着您的应用程序兼容 iOS 9 和 以上 设备。

该应用程序不会 运行 在 以下 9.0 设备上,但可以 运行 在任何 iOS 版本 更高版本上 比 iOS 9.0.

如果您是 Xcode 的新手,我建议您接受默认设置,并将其视为对您项目的限制。

随着更新的 Xcode 版本的出现,将删除对旧目标值的支持。拥有广泛客户群的公司必须以自己的方式处理这个问题。

在我参与的大多数项目中,iOS 版本很重要,因为它决定了哪些设备可以 运行 您的应用程序。

例如,iOS 10 基本上落后于所有 iPod 式连接器。

部署目标决定了您的应用在旧 iOS 版本上 运行 的能力。

App with deployment target set to 10 will work on iOS version 10+ (10, 11, 12, 13 ...) but won't work on 9.x.

当 iOS 的新版本发布时,有些人懒得将他们的设备更新到最新的 iOS 版本,因此他们 can't download your app from the App Store

例子

如果您选择更高的部署目标 (e.g 12.1),即使拥有最新设备但 iOS 版本较旧的用户也无法下载您的应用(iPhone X与 11.0)。 相比之下 如果您选择尽可能低的部署目标 (e.g 6.0),您会尝试使您的应用最大程度地向后兼容(因此即使有人没有更新他们的 iOS年龄段的人将能够下载您的应用程序)。

小心

许多(几乎所有)较新的框架和功能将无法 运行 在较低的 iOS 版本上正确(按预期运行),这会增加应用程序崩溃的可能性。

什么影响部署目标

以下几个因素要求更高的部署目标。

1) 使用最新的 iOS SDK(单独)

2) 使用最新的 iOS SDK 特定功能(约束、较新的 XIB 文件等)。

3) 使用快速适配的外部库/框架(例如 Facebook SDK、Firebase 等)。

4) 更高的 Swift 版本 (5.0) 需要更高的部署目标,而不是在旧版中编写您的应用程序 Objective C) !Needs citation.

解决方案

我们一直在使用 Deploymate 以获得最大的向后支持。它主要帮助我们警告以下内容:

1) 较新的 API 不适用于较低的 iOS 版本

2) 使用不适用于更新的 iOS 版本的已弃用方法。

这是您开始修复代码以使其可用于较低 iOS 版本以获得最大兼容性的时候。

注意: Xcode 也说明了一些陷阱。 Deploymate 既不与我们合作也不以任何形式向我们付款。您可以寻找其他替代品。

iOS 部署目标(IPHONEOS_DEPLOYMENT_TARGET)

Deployment Target 是 iOS 的 最低 版本,您的目标支持该版本。

意思是:

  • 作为开发者,您支持此版本并且您能够支持所有下一个兼容性
  • 作为用户,您应该至少拥有此版本的 iOS

要在 Xcode 11.5

中更改它
Build Settings -> iOS Deployment Target
//.pbxproj
IPHONEOS_DEPLOYMENT_TARGET