当使用Xcode 4.2和iOS 5 SDK时,是否有可能locking旧的iOS版本?

我刚刚下载了带有iOS 5 SDK包的Xcode 4.2,并立即注意到我无法使用iOS 4.2.1的iPhone 3Gs进行debugging。 我只能在安装了iOS 5的iPhone 4上进行debugging和testing。

对于运行iOS 5.0以下的任何设备,Xcode只是说“iPhone3GS已完成运行”,并没有运行它。 我将我的部署目标设置为3.0,因为我没有在3.0以上的应用程序中使用任何function,我希望能够以3.0或更高版本为目标。 我已经安装了所有的供应configuration文件并且是最新的。

我已经退出并重新启动xcode,我已经清理了多次构build。 我已经尝试在构build版本设置中添加armv6,但是没有任何东西可以允许我在使用ios 4.2.1的旧手机上构build和运行我的应用程序。

我的问题是,是否仍然可以使用适用于iOS版本低于5的新SDK开发应用程序? 我怎么能确定,如果我无法在我的旧手机上安装,我的应用程序仍然可以在较低的iOS版本上运行?

编辑: 好吧,它看起来像iOS SDK 5默认情况下,放弃对armv6的支持。 你必须做的是添加armv6在build筑设置为您的目标和您的项目下的体系结构字段。 然后你的应用程序将能够在iPhone 3G设备上运行。 在这里可以find答案如何build立与iOS 5的armv6和armv7体系结构

我有同样的问题试图得到一个新的iPhone 3G 4.2.1上运行的Xcode 4.2项目。 这是我如何能够得到它运行。

1)将目标的“Build Settings”==>“Architecture”从“Standard(armv7)”更改为“other”。 添加armv6和armv7。

2)将目标的“Build Settings”==>“Valid Architecture”更改为armv6和armv7。

3)将目标的“生成设置”==>“iOS部署目标”更改为iOS 4.2。

在这里输入图像说明

4)打开项目* -Info.plist,删除设置“必需的设备function”(注意它需要armv7) 在这里输入图像说明

顺便说一句,当我试图通过组织者手动添加应用程序,我想到了这一点,它报告:

无法安装应用程序

应用程序的Info.plist位于/​​Users/…/TestsDebug.app指定设备function要求,Dev iPhone 3G不符合

所有应该在那之后工作。 谈谈PITA。

转到Xcode>首选项>下载并安装旧版iOS的debugging支持。

mmorris让我接近解决这个问题…在Info.plist中,我必须设置需要的设备function为armv6,而不是armv7希望这也可以帮助其他人。

您需要连接手机,然后转到组织者。 Xcode应该自动请求旧版本。

查看开发者页面了解更多信息。 它在4.2 beta的注释中被描述

我遇到了一个类似的问题,试图在旧的iPod Touch上运行我的应用程序。 我升级到Xcode 4.3.3,并且在较旧的硬件上,应用程序将不再在debugging器中运行。

我相信这里关于“架构”和“需要的设备function”的其他评论是正确指定的重要细节。 不幸的是,他们还不足以解决我的问题。

就我而言,我发现构buildscheme是罪魁祸首。 升级我的项目时,Xcode 4.3.3提示我从GDBdebugging器切换到LLDB。 当我将我的scheme的“运行”操作改回到GDB时 ,我能够从Xcode的旧硬件上再次运行应用程序。

我发现我必须添加armv6到架构,但仍然没有工作。 现在我已经从必需的能力中移除了armv7,就是这样! 有效!

这工作对我来说,如果你以前有一个旧版本的Xcode应该为你工作。 如果没有,那么你应该按照其他人的build议从SDK的旧版本获取SDK:

sudo cp -a /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk

这个命令与其他人所显示的只有一点不同,但是这些命令为我删除了SDKs文件夹中的文件 – 我们希望使用适当的名称创build它的一个子目录。

在我的情况下,所需的设备function中有一个冗余的行 在这里输入图像说明

我刚刚删除它…

在这里输入图像说明

希望它会帮助别人。