2011-10-13 52 views
102

我刚刚下载了带有iOS 5 SDK包的Xcode 4.2,我立即注意到我无法使用iOS 4.2.1的iPhone 3Gs进行调试。我只能在安装了iOS 5的iPhone 4上进行调试和测试。当使用Xcode 4.2和iOS 5 SDK时,是否可以锁定旧版iOS?

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

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

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

编辑: 确定它看起来像的iOS SDK 5默认情况下下降对ARMv6的支持。你需要做的是在你的目标和项目的Build Settings下的Architectures域中添加armv6。然后,您的应用将能够在iPhone 3G设备上运行。 答案都可以在这里 How to build for armv6 and armv7 architectures with iOS 5

+0

请注意,您的编辑与体系结构有关,这是“iOS”版本的一个单独问题。此外,请将编辑添加为答案,以便您可以接受您找到的解决方案,并且可以将此问题标记为已回答。 – darvids0n

回答

152

我有同样的问题,试图获得在iPhone 3G 4.2.1上运行的新创建的Xcode 4.2项目。这是我能够如何运作的。

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

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

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

enter image description here

4)打开项目* -Info.plist,删除设置“所需的设备能力”(注意它需要的ARMv7)enter image description here

顺便说一句我想通了这一点,当我试图手动添加通过主办方的应用程序,它报道:

不能在/用户安装应用程序

Info.plist中应用/ .. ./TestsDebug。应用程序指定 设备能力要求,这是Dev Dev没有达到的要求iPhone 3G

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

+0

非常感谢!我欠你一杯啤酒!这确实解决了我的问题,PITA的确如此:D –

+4

谢谢!我会读到其他地方的架构设置,但没有人否则似乎也提及“需要的设备功能”设置。 – bunnyhero

+1

超级!谢谢 ! –

1

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

有关更多信息,请参阅开发人员页面。它在4.2 beta版本的说明中有所描述

+0

我这样做,并点击“使用此设备进行开发”,它似乎做了它应该的,但我仍然无法从我的旧设备上运行一个应用程序从Xcode运行。 –

12

转至Xcode>首选项>下载并安装旧版iOS的调试支持。

+0

我去了首选项,并下载并安装调试支持较旧的操作系统,退出xcode,重新打开xcode做了一个干净的和构建,但该应用程序仍然不会安装在我的旧设备上。我现在处于全面亏损状态,因为当我看到您的回复时,我确信这会解决我的问题:( –

+1

我欠你一瓶啤酒!这解决了我在Xcode 4升级后遇到的另一个问题!我现在可以调试我的iOS 4.2设备(iPod Touch第二代)! –

3

mmorris让我接近解决问题... 在Info.plist中,我不得不把所需的设备功能设置为ARMv6的,不是的ARMv7 希望这有助于其他人出来为好。

1

我发现我不得不将armv6添加到架构中,但仍然无法正常工作。现在我已经从所需的能力中移除了armv7,就是这样!有效!

1

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

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

就我而言,我发现构建方案是罪魁祸首。升级我的项目时,Xcode 4.3.3提示我从GDB调试器切换到LLDB。当我将我的方案的运行操作更改回GDB时,我能够在Xcode的旧硬件上再次运行该应用程序。

0

这对我有用,如果您之前有旧版本的Xcode,应该为您工作。如果不是,那么你应该按照其他人的建议从旧版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为我自己保存文件夹 - 我们希望使用适当的名称创建它的子目录。

0

在我的情况有所需设备功能 enter image description here

我只是删除它冗余线路 ...

enter image description here

希望它能够帮助别人。