2011-10-13 53 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

希望它能夠幫助別人。