如何用Xcode 4.5 编译支持 armv6 CPU及iOS 4.3以前的版本
2012-10-15 20:44
357 查看
原来的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等等。
如果你有更完美的办法,请留言给我,@seamanjiang(weibo),我补充到文档中,反馈大家。
开始支持新的指令集 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等等。
如果你有更完美的办法,请留言给我,@seamanjiang(weibo),我补充到文档中,反馈大家。
相关文章推荐
- 如何用Xcode 4.5 编译支持 armv6 CPU及iOS 4.3以前的版本
- 如何用Xcode 4.5 编译支持 armv6 CPU及iOS 4.3以前的版本
- 如何用Xcode 4.5 编译支持 armv6 CPU及iOS 4.3以前的版本
- Xcode4.2、iOS各版本以及ARMv6、ARMv7编译架构介绍
- iphone各代cpu架构及xcode对ios sdk版本及cpu架构的支持
- libidn.a 如何编译iOS下支持arm64的.a库
- iOS开发-低版本XCode如何支持高版本iOS系统进行真机调试
- iOS下完美编译ffmpeg+x264,支持armv7, armv7s, 模拟器 (验证不通过,估计和ffmpeg版本有关)
- 在xcode 4.2.1中使用skd 5.0 编译出在ios 4.3或者其他版本里面可以用的应用
- 如何编译出兼容4.3, 4.3以下和以上版本的iOS静态库文件?及在4.2真机上运行?
- iOS下完美编译ffmpeg+x264,支持armv7, armv7s, 模拟器 (验证不通过,估计和ffmpeg版本有关)
- 如何判断一个类是否支持某属性和方法以及如何判断IOS的版本
- iOS开发 Xcode编译以前用xib搭建的View或者cell无反应
- 快速解决低版本Xcode不支持高版本iOS真机调试问题
- Xcode 4.1/4.2/4.3/4.4/4.5 + iOS 5.1.1免证书(iDP)开发+真机调试+生成IPA全攻略
- 快速解决低版本Xcode不支持高版本iOS真机调试问题
- Mac OS X10.10_xcode6.1_ios8.1环境下,编译lame静态库libmp3lame.a,支持arm64 armv7s x86_64 i386 armv7指令集
- [iOS] xcode 4.5不再支持armv6
- 如何查看arm-linux-gcc某个版本支持的-mcpu,-march可选值
- xcode8.3.3支持更高版本的iOS11.2真机测试