【发布时间】:2017-05-07 19:10:07
【问题描述】:
这是我假设的一个非常简单的问题。谁能告诉我部署目标是什么意思。如果我选择 iOS 10,是否意味着只有 iOS 10 的用户才能下载该应用程序。选择较低的部署目标是不是很糟糕?另外,继续部署目标,不建议在较低的部署目标上运行。
【问题讨论】:
这是我假设的一个非常简单的问题。谁能告诉我部署目标是什么意思。如果我选择 iOS 10,是否意味着只有 iOS 10 的用户才能下载该应用程序。选择较低的部署目标是不是很糟糕?另外,继续部署目标,不建议在较低的部署目标上运行。
【问题讨论】:
假设您已将最低部署目标设置为 iOS 9。 这意味着您的应用程序与 iOS 9 及以上设备兼容。
该应用程序无法在低于 9.0 的设备上运行,但可以在高于 iOS 9.0 的任何iOS 版本上运行。
【讨论】:
Deployment Target 中的设置最终会更改 Info.plist。这是在 Xcode 4.x 之后(可能)添加的一种便捷方式
如果您是 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) 不适用于较低 iOS 版本的较新 API
2) 使用不适用于较新 iOS 版本的已弃用方法。
这是您开始修复代码以使其可用于较低 iOS 版本以获得最大兼容性的时候。
注意: Xcode 还告知了几个陷阱。 Deploymate 既不与我们有关联,也不以任何形式向我们付款。您可以寻找其他替代品。
【讨论】:
iOS 部署目标(IPHONEOS_DEPLOYMENT_TARGET)
Deployment Target 是您的目标支持的最低版本的 iOS。
意思是:
在 Xcode 11.5 中更改它
Build Settings -> iOS Deployment Target
//.pbxproj
IPHONEOS_DEPLOYMENT_TARGET
【讨论】: