【问题标题】:iPhone - How to determine the deployment target iOS version of an existing projectiPhone - 如何确定现有项目的部署目标 iOS 版本
【发布时间】:2012-02-06 09:43:07
【问题描述】:

我有一个现有的大型 iOS 项目,默认设置为 iOS 5.0 目标。但我很确定它也是 4.?.?合规。

我如何知道我的应用可以针对的最低 iOS 版本,而无需逐字将整个代码与 iOS 文档进行比较,以了解每个方法/常量/...引入的 iOS 版本,最后,知道我可以定位的最低 iOS 版本吗?那将需要数周时间!

(XCode 没有帮助...将 iOS 目标设置为低于 iOS 5 在编译时不会引发任何警告或错误的值,所以我不知道例如,在设置目标时哪些方法仅适用于 iOS 4.2版本到 iOS 4.1...)

【问题讨论】:

  • 不明白你想要什么?
  • @HardikShah:查看我的编辑
  • 我认为您应该将其设置为 3.2,这对于所有设备来说都足够了,并且不应该出现任何警告,不是吗?
  • @HardikShah:这不是因为我将最低目标版本设置为 3.2,我的代码符合 3.2。
  • 奥利弗,请看下面我的回答。除非您有运行 3.2 的设备进行测试,否则您应该针对的最早操作系统是 4.3,这是模拟器允许您测试的较早版本。

标签: iphone objective-c ios xcode backwards-compatibility


【解决方案1】:

如果您使用过任何 iOS 5 API,那么当该代码尝试在 iOS 4.x 上执行时,应用程序将会崩溃,除非您在调用它们之前输入一些代码来检查方法是否可用(查找“respondsToSelector: "在文档中)。

将您的部署目标设置为 iOS 4.3。在模拟器中,在左上角的下拉菜单中,它应该为您提供 iOS 5 或 4.3 模拟器的选择。选择 4.3,然后彻底测试您的应用程序,如果它崩溃,您可以检查控制台日志以找到有问题的 API 调用,然后找出解决方法。

如果您在构建下拉列表中看不到 4.3,那么您肯定仍然将 5.0 作为您的部署目标。

我建议不要将部署目标设置为早于 4.3,除非您有运行可以使用的早期操作系统的测试设备。

因此,您的问题的答案是,部署目标应该是您能够测试应用程序的最早版本的 iOS(使用模拟器或实际设备),除非您在更高版本的操作系统中依赖 API并且无法解决它们。

【讨论】:

  • 好主意,但是如果应用程序具有需要在设备上运行的功能,如相机、陀螺仪、加速度计、gps 等,你如何让应用程序运行?该应用程序拥有所有这些。
  • @Oliver 这是一个不同的问题,因为它们取决于硬件,而不是 iOS 版本。有一些方法可以检查你提到的所有这些事情。您可能希望在应用启动时检查它们。
  • @Oliver,您可以检查相机、加速度计等 API 的文档并确保您没有使用任何 iOS5 功能,或者您可以获取第二部手机进行测试并安装较早的iOS版本就可以了。后一种选择是专业人士所做的(我有一套包含五部 iPhone、iPod Touch 和 iPad 的套件,适用于各种操作系统),但如果您刚开始作为开发人员,这是一个昂贵的选择。
  • 您可以从 apple.com 上的 Apple 翻新商店以相对便宜的价格购买翻新的 iPod Touch 第 4 代。这可能会随 iOS 4 开箱即用,或者如果没有,您可以降级它。它可以让你测试相机、加速度计,虽然它没有 GPS,但位置 API 仍然可以以相同的方式工作(它们使用 Skyhook 而不是 GPS)。
【解决方案2】:

在您的目标的构建设置中,您可以搜索部署目标。这将为您提供有关开发此应用的最低 iOS 版本的信息。

【讨论】:

  • 不,这只是告诉应用程序应该使用的最低版本,即使它不是真的。
猜你喜欢
  • 2013-12-03
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 2020-07-14
  • 2022-07-24
  • 2020-12-12
相关资源
最近更新 更多