用iOS 6 SDK和Xcode 4.5构buildarmv6架构(目标iOS 3.1.3)?

有没有机会使用iOS 6 SDK开发针对iOS 3.1.3的应用程序? 如果我用旧的部署目标打开我的项目,编译器会警告我:

iOS deployment targets lower than 4.3 are not supported 

这可能是由于显然只有armv7armv7s二进制文件可以build立的事实。 如果我手动添加armv6 (在设备上工作,直到iPhone 3G),还有几个警告:

 warning: no rule to process file '$(PROJECT_DIR)/main.m' of type sourcecode.c.objc for architecture armv6 ... ... warning: architecture armv6 is not supported (current ARCHS = "armv6 armv7 armv7s"). 

那我该如何处理呢? 有没有办法在使用iOS 6 SDK进行开发时支持iOS 3.1.3? 如果没有,我最终将不得不移动到iOS 4.3的最低目标。 是否可以提交仅支持版本> = 4.3的新版本? 我的用户在早期版本上会发生什么? 他们是不是被告知不兼容的更新,因此将继续使用我的应用程序的旧版本? 如果没有,这可以实现吗?

使用Xcode 4.5(即iOS 6 SDK),您可以创build的最低版本是iOS 4.3。 我想现在是您的3.1.3客户升级的时候了。

oonoweb的答案在iOS SDK 6.0中是正确的。 在对iOS 6 SDK进行构build时,无法支持iOS 4.3以下的版本,但可以使用Xcode 4.5继续为armv6构build目标版本,并且可以使用iOS 4.2.1版本以下的版本。

诀窍是针对iOS 5.1 SDK而不是6.0。 注意:如果您这样做,您将无法使用任何新的iOS 6特定function:

chpwn的博客列出了我重写的步骤:

  • 从苹果开发者下载下载Xcode 4.4.1(你不需要安装它)
  • 打开.dmg,右键单击Xco​​de.app,“Show Package Contents”
  • 在该软件包中查找iOS 5.1 SDK: Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/
  • 复制这个SDK
  • 打开Xcode.app(4.5)的包内容,并将5.1 SDK粘贴到以下位置: Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
  • 在Xcode 4.5中打开你的项目。 转到您的目标>构build设置选项卡>基本SDK,并从下拉列表中selectiOS 5.1
  • 再次在构build设置选项卡>有效的体系结构 – 删除armv7s,如果它在那里,并添加armv6,如果它不存在。
  • 转到信息选项卡>部署目标,然后键入3.1.3(或任何你支持的下拉)到下拉列表(该选项不会在那里,但你可以input)。
  • 你现在可以删除Xcode 4.4.1 .dmg,如果你不想安装它。

你会得到关于没有规则来处理armv6文件的警告。 Nate最近发布了这个答案来处理这些问题。

如果您正在创build一个新项目(而不是保留旧项目),则可能还需要查看***-Info.plist文件,并从“必需的设备function”中删除armv7。