如何用Xcode 4.5 编译支持 armv6 CPU及iOS 4.3以前的版本

原来的iPhone,iPhone3G 以及 第一代和第二代的iPod Touch 均只支持 Armv6的CPU指令集。然而,随着iPhone3GS 这款新产品的发布,Apple 开始支持新的指令集 Armv7,iPhone5的所有设备支持Armv7s,且向下兼容。为了保持向下兼容,且支持旧有设备及旧有指令集,Apple支持胖二进制代码fat binaries也就是在可执行文件中支持更多的平台架构。


但 是好景不长,随着Xcode 4.5也就是最新版本的Xcode的发布,苹果宣布停止对armv6指令集的支持,强迫开发者放弃iOS 4.2.1及以前的支持Armv6指令集的版本。在我看来,我依然认为支持旧设备企业市场必须比公众市场更长时间,所以放弃4.2.1及以前的版本,并不 是我想要的。经过一段时间摸索,幸运的,我们发现了一些办法,通过简单的修改及配置,我们能够编译armv6指令集的代码。


以下是我们的一些方法,供大家参考:

  • 找到一份旧版本Xcode的拷贝,推荐4.4.1,如果你是 iOS Developer Program的参与者,可以直接从developer.apple.com/ios下载。如果不是,那么还是问一下百度
  • 解压缩Xcode 拷贝出5.1的SDK Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/
  • 下来把拷贝出来的SDK移植进入Xcode 4.5中。例如: Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
  • 用Xcode打开项目,点击项目查看“Build Settings”属性,会出现一个新的选项“Base SDK”:选中 iOS 5.0
  • 还在Build Settings下,找到 Valid Architectures。需要把armv7s 改成armv6
  • 现在我们可以编译armv6了,但是还不能运行在任何armv6的设备上,因为Target不对。我们再点击Info选项,修改Target,例如 iOS 3.0或跟早的版本。你不会在下来菜单中找到3.0了,手填吧

以上就是所有的做法,但这一切并不太完美,例如你不能使用iOS 6的新特性,不能使用armv7s新的指令集等。当然了,如果你的Xcode通过Mac AppStore下载的,升级到新版本后,你还需要再加入一次SDK等等

你可能感兴趣的:(如何用Xcode 4.5 编译支持 armv6 CPU及iOS 4.3以前的版本)