确定最低可能 iOS / macOS 部署目标的最佳方法
Best way to determine lowest possible iOS / macOS deployment target
有没有办法,给定一个 iOS 或 macOS 代码库,确定我可以安全地为项目设置的最低可能 IPHONEOS_DEPLOYMENT_TARGET
或 MACOSX_DEPLOYMENT_TARGET
,为了捕获最大的潜在支持设备数量?我不想随便说 "iOS 11" 或其他什么,因为那样会使旧操作系统的用户无法使用。另一方面,每个 API 调用都需要特定版本的 OS,而且我没有对每个 API 调用进行统计,我也不想查看他们都起来了。
例如,也许我的应用程序调用的数千个 API 中有一个需要 iOS 10 并且会在 iOS 9 上失败。有没有办法告诉我?只是将 IPHONEOS_DEPLOYMENT_TARGET
设置为 8.0 似乎可以正常编译(没有警告),但这并不一定意味着我可以在 8.0 设备上部署。
This similar 8-year-old question 表明当时没有这样的工具。想知道此后是否有任何变化。
Xcode 10(和 Xcode 9)会在您使用任何可能有问题的 API 时向您发出警告。例如,如果您的部署目标设置为 iOS 11,并且您尝试使用在 iOS 12 中添加的 API,则 Xcode 会警告您。
因此,将您的项目或目标的部署目标更新为您想要的任何内容,让 Xcode 向您发出有关此类 API 甚至已弃用的 API 的警告。
然后您可以使用警告上的 "fix" 按钮添加适当的 if (@available ...)
检查较新的 API 然后您可以在 else
以支持旧的 iOS 版本。
如果您觉得此类 API 问题太多,请根据需要更改部署目标。
有没有办法,给定一个 iOS 或 macOS 代码库,确定我可以安全地为项目设置的最低可能 IPHONEOS_DEPLOYMENT_TARGET
或 MACOSX_DEPLOYMENT_TARGET
,为了捕获最大的潜在支持设备数量?我不想随便说 "iOS 11" 或其他什么,因为那样会使旧操作系统的用户无法使用。另一方面,每个 API 调用都需要特定版本的 OS,而且我没有对每个 API 调用进行统计,我也不想查看他们都起来了。
例如,也许我的应用程序调用的数千个 API 中有一个需要 iOS 10 并且会在 iOS 9 上失败。有没有办法告诉我?只是将 IPHONEOS_DEPLOYMENT_TARGET
设置为 8.0 似乎可以正常编译(没有警告),但这并不一定意味着我可以在 8.0 设备上部署。
This similar 8-year-old question 表明当时没有这样的工具。想知道此后是否有任何变化。
Xcode 10(和 Xcode 9)会在您使用任何可能有问题的 API 时向您发出警告。例如,如果您的部署目标设置为 iOS 11,并且您尝试使用在 iOS 12 中添加的 API,则 Xcode 会警告您。
因此,将您的项目或目标的部署目标更新为您想要的任何内容,让 Xcode 向您发出有关此类 API 甚至已弃用的 API 的警告。
然后您可以使用警告上的 "fix" 按钮添加适当的 if (@available ...)
检查较新的 API 然后您可以在 else
以支持旧的 iOS 版本。
如果您觉得此类 API 问题太多,请根据需要更改部署目标。