部署目标是什么意思?

180
这是一个非常简单的问题,我假设。有人可以告诉我什么是部署目标吗?如果我选择iOS 10,这是否意味着只有iOS 10的用户可以下载该应用?选择较低的部署目标是否不好?另外,关于部署目标的问题,运行在较低的部署目标上是否不推荐?

2
请查看此问题:https://dev59.com/ymMl5IYBdhLWcg3wP04a - mlidal
4个回答

221

假设您将最小部署目标设置为iOS 9。

这意味着您的应用程序与iOS 9及以上设备兼容。

该应用程序无法在低于 9.0 的设备上运行,但可以在任何大于iOS 9.0的版本上运行。


低版本的用户是否仍然可以在应用商店上看到该应用程序? - Sagrian
4
可以,但会显示该应用与用户设备的操作系统不兼容。 - FreakyAli
所以与 Android 不同,“部署目标”实际上意味着“最低部署目标”,他们只省略了第一个单词?(在 Android 中,目标和最小值是两个不同的概念) - pete

29

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

部署目标设置为10的应用程序将可在iOS 10+(10、11、12、13等)上运行,但无法在9.x上运行。

当发布新版本的iOS时,有些人不会更新他们的设备到最新的iOS版本,因此他们无法从App Store下载您的应用程序

示例

如果您选择更高的部署目标(例如12.1),您的应用程序将无法下载给即使拥有最新设备但运行较旧iOS版本的人(带有11.0的iPhone X)。 相反,如果您选择最低可能的部署目标(例如6.0),则尝试使您的应用程序最大程度地向后兼容(因此即使有人已经很久没有更新他们的iOS也可以下载您的应用程序)。

注意事项

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

影响部署目标的因素

以下是几个需要更高部署目标的因素:

1)仅使用最新的iOS SDK

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

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

4) 使用更高版本的Swift(5.0)需要更高的部署目标,而使用传统的Objective C则不需要。 !需要引用来源

解决方案

我们一直在使用Deploymate来最大限度地支持向后兼容。它主要帮助我们警告以下内容:

1)较旧iOS版本上无法工作的新API

2)在较新iOS版本上无法工作的弃用方法。

这时,您需要修复代码以使其适用于较低的iOS版本,以实现最大兼容性。

注意: Xcode也会指出几个问题。Deploymate与我们没有任何关联或以任何方式支付我们。您可以寻找其他替代方案。


10

iOS部署目标(IPHONEOS_DEPLOYMENT_TARGET)

部署目标是您的目标支持的iOS的最低版本。

这意味着:

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

在Xcode 11.5中更改它:

Build Settings -> iOS Deployment Target
//.pbxproj
IPHONEOS_DEPLOYMENT_TARGET

2
如果你是Xcode的新手,我建议接受默认设置,并将其视为项目的限制。随着新版本的Xcode的出现,对于旧目标值的支持将被删除。那些有广泛客户基础的公司必须用自己的方式解决这个问题。在我参与的大多数项目中,iOS版本很重要,因为它决定了哪些设备可以运行你的应用程序。例如,iOS 10基本上放弃了所有iPod风格的连接器。

2
点赞:有用的“实战”信息。虽然更适合作为评论,但仍然有价值。 - timmi4sa
我宁愿成为一个声誉稍低但务实的人。对于新手来说,Xcode需要消化的东西太多了。 - benc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接