【问题标题】:How to make an iPhone app compatible with multiple SDK (firmware) versions如何使 iPhone 应用程序兼容多个 SDK(固件)版本
【发布时间】:2011-03-02 21:52:00
【问题描述】:

随着 iOS 4 即将推出,我已经计划在我的应用程序的未来更新中包含 iAd。我认为这将使我的应用程序对低于 4.0 的固件的任何人都无法使用。有没有办法根据用户的固件更改这些变量和 .xib 文件?

【问题讨论】:

  • 这是一个很好的问题!但是,如果我有能力,我会编辑标题,一些。问题和答案正是我想要的,但我通过一个链接从我最初认为可能是正确的问题的链接到这里(它不是。)建议:“如何使 iPhone 应用程序与以前的兼容SDK”或类似的。

标签: iphone iphone-sdk-3.0 compatibility ios4


【解决方案1】:

是的,您可以使用最新的 SDK(即:5.1)进行构建,并且仍然可以在具有较早版本固件 (SDK) 的设备上运行。

  • 将您的部署目标设置为您希望能够运行的最早版本,即:3.0。
  • 您将 Base SDK 设置为您正在编译的最新版本,即:5.0。这样您就可以在代码中引用较新的定义和符号。本文"SDK and Deployment Targets" 详细讨论了Deployment vs Base SDK。
  • 到库/框架的链接较弱,符号仅在较新的 iOS 中可用。这样您的应用就可以在没有新符号的设备上运行。
  • 您必须在调用它之前check to see that a newer method is available。您必须确保仅当您的应用在
  • 带有 XCode 4.2 的新功能:要支持旧设备,您需要在所需设备功能列表中 add armv6 构建架构 remove armv7

有关详细信息,请参阅这些 SO 问题和答案:

【讨论】:

  • 那么 iAd 代理的方法会发生什么变化?他们会触发错误吗?
  • 是的,他们会出错。您无法在低于 iOS 4 的任何设备上显示 iAd。您需要进行某种条件 ifdef 检查,以便 iAd 不会尝试在 iOS 3.x 上显示
  • “到库/框架的弱链接,符号仅在较新的 iOS 中可用。”您的陈述似乎表明应该弱链接 Foundation 和 UIKit 等,因为它们还包含一些仅在较新的 iOS 上可用的符号
  • @JonB 如果版本是 iOS 3.X 则正确,iAd 将无法工作,因此需要对 ifdef 进行机密编码
猜你喜欢
  • 2010-11-14
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 2018-06-08
  • 2023-03-17
相关资源
最近更新 更多