msk*_*skw 36 xcode cocoa-touch ios
最新发行说明表明4.2.1及更低版本将不受支持,我们现在必须使用2版本的Xcode来支持旧设备?如果我们想要开发iOS6并支持4.2及更低版本,这将很难支持旧设备.
我不认为Xcode 4.4会支持iOS6.所以这就是问题所在.开发人员如何在没有这么多麻烦的情况下轻松支持这些平台?
Nat*_*ate 29
你可以这样做,但它需要一些小的Xcode黑客攻击和一些牺牲.根据"支持iOS 6"的含义,这可能适用于您,也可能不够.如果您只是希望您的应用在iOS 6上运行,那么这应该可行.如果您还需要应用程序来合并新的iOS 6功能,那么它不会.
(注意其他使用多个版本的Xcode没有问题的人:这个类似的问题有答案,允许你也使用新的iOS 6 API并直接定位armv7s)
请参阅chpwn博客的基本说明 (但请阅读以下其他内容!)
基本上,您可以使用Xcode 4.5为iOS 4及更高版本构建,但是您无法利用仅新的iOS 6功能.所以,你真的在为iOS 4和5构建,并假设该应用程序在iOS 6上运行正常(应该是真的,但你需要自己测试).
您需要复制iOS 5 SDK文件夹
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.*.sdk
Run Code Online (Sandbox Code Playgroud)
从旧的Xcode安装(您需要暂时保留,或重新安装到非标准位置).然后,您可以将Build Settings中的Deploy Target设置为iOS 4.0(或任何您想要的最低操作系统).您可能需要project.pbxproj在文本编辑器中打开该文件以手动设置:
IPHONEOS_DEPLOYMENT_TARGET = 4.0;
Run Code Online (Sandbox Code Playgroud)
您还需要将架构设置为armv6和armv7.你不能直接还瞄准armv7s.但是,这并不意味着你的应用程序不会在iPhone 5上运行. armv7可执行程序应该在iPhone 5上运行,只是没有添加任何优化armv7s.只是兼容性在另一个方向上不起作用(例如,armv7可执行文件不能在armv6iPhone 3G 上运行).

还有一个步骤可能是必要的,这在chpwn的博客中没有提到.您可能会收到这些警告(这确实是错误,因为Xcode不会正确生成您的可执行文件):
警告:没有规则处理架构armv6类型sourcecode.c.objc的文件'$(PROJECT_DIR)/main.m'
为了解决这个问题,您需要为目标设置一个自定义构建规则,告诉Xcode使用LLVM GCC 4.2来生成armv6代码.为与模式匹配的文件定义规则*.[mc]:

这将是一个与Xcode默认不同的编译器,您可能需要调整Objective-C代码中的一些语法.即使许多想要这样做的人可能在ARC之前编写了他们的应用程序,但重要的是要注意LLVM gcc 4.2不支持ARC.
最后,您可能仍会看到来自Xcode的关于iOS部署目标低于4.3且armv6不受支持的警告.我发现,这些都不是问题,可以忽略不计:

lipo -info在此之后运行我的应用程序可执行文件显示所需的结果
lipo -info MyAppName
Architectures in the fat file: MyAppName are: armv6 armv7
Run Code Online (Sandbox Code Playgroud)
Pau*_*nde 22
Xcode 4.5使iOS 4.3成为最早支持的操作系统,它有效地孤立了原有的iPhone和3G.
如果您想支持4.3之前的iOS版本,则需要保留4.4版本的Xcode.
更清楚一点:你不能轻易(意味着Xcode没有开箱即用)支持4.3之前的设备并在同一个应用程序中使用iOS 6功能.这是因为iOS 6功能需要XCode 4.5,它也将iOS 4.3设置为支持的最低操作系统.
所以,你有3个选择:
如果您对超越Xcode直接支持的内容感到满意,请参阅Nate的回答.