使用iOS 6 SDK和Xcode 4.5构建armv6架构(目标iOS 3.1.3)?

Bjö*_*lek 14 iphone targets ios ios6 xcode4.5

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

iOS deployment targets lower than 4.3 are not supported
Run Code Online (Sandbox Code Playgroud)

这可能是由于仅明显的事实armv7armv7s二进制文件可以建成.如果我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").
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*tyG 21

关于iOS SDK 6.0,oonoweb的答案是正确的.在针对iOS 6 SDK构建时,不可能支持iOS 4.3以下,但是可以使用Xcode 4.5继续为armv6和目标iOS 4.2.1及更低版本构建.

诀窍是针对iOS 5.1 SDK而不是6.0进行构建.注意:如果您这样做,您将无法使用任何新的iOS 6特定功能:

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

  • 从Apple Developer Downloads下载Xcode 4.4.1 (您无需安装)
  • 打开.dmg,右键单击Xco​​de.app,'显示包内容'
  • 在以下位置找到该软件包中的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中打开您的项目.转到Target> Build Settings选项卡> Base SDK,然后从下拉列表中选择iOS 5.1
  • 再次在Build Settings选项卡> Valid Architectures中 - 删除armv7s(如果它在那里),并添加armv6(如果它已经存在).
  • 转到"信息"选项卡>"部署目标",然后在下拉列表中键入3.1.3(或者您支持的任何内容)(该选项不会出现,但您可以输入).
  • 您现在可以删除Xcode 4.4.1 .dmg如果您不想安装它.

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

如果您正在创建一个新项目(而不是维护旧项目),您可能还需要查看该***-Info.plist文件,并从"必需设备功能"中删除armv7(如果存在).

  • 我已经按照chpwn博客的所有步骤进行了操作,但现在Xcode给了我很多警告:"警告:没有规则处理文件'$(PROJECT_DIR)/Classes/aSUBDIRECTORY/fileXYZ.m'类型为sourcecode.c.objc for architecture的ARMv6 (4认同)

onn*_*web 10

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