2011-06-16 40 views
11

可能重複:
iPhone app does not run on old device (3G, 3GS, …)從xcode3切換到xcode4 - 無法加載程序到舊的iPod Touch的

我有一個類似的問題,這個(iPhone app does not run on old device (3G, 3GS, ...)),但該頁面上的解決方法對我無能爲力。我一直在XCode3上開發iOS應用程序,並在運行iOS 4.2.1的舊版第二代iPod Touch上進行測試。嘗試過去幾天使用XCode4代替。

我能夠使用模擬器在XCode4下創建和運行應用程序,這兩個應用程序最初都是在XCode3下開發的,以及全新的XCode4創建的「Hello World」類型應用程序。但是,當我嘗試在實際的硬件上添加一個時,它會以很少的錯誤消息的方式失敗。 XCode4中的調試窗口不會顯示任何錯誤。 XCode頂部中間的活動/狀態指示器從「Building [AppName]」直接到「Finished Running [AppName]」,但該應用程序從未在設備上傳輸或運行。

如果我通過主辦方看看iPod的控制檯我看到一堆類似的錯誤:

週四6月16日15點17分56秒未知lockdownd [16] <錯誤>:2ff68000 handle_connection:無法接受來自Xcode的USB消息#6。殺死連接

週四6月16日十五點17分56秒未知com.apple.mobile.lockdown [16] <通知>:無法收到消息

的大小,我猜它涉及到的是。我試過拔掉所有其他USB設備從我的Mac,但沒有任何區別。試圖重啓設備和Mac,但再次沒有區別。

我已將iOS部署目標調整爲4.2,因此我認爲那裏沒有任何問題。設備在管理器中顯示綠點和有效的未過期供應配置文件。下代碼簽名性質,它看起來像:

Code Signing Entity  Don't Code Sign 
    Debug    Don't Code Sign 
     Any iOS SDK  iPhone Developer (currently matches...[profile I have installed]) 
    Release    Don't Code Sign 
     Any iOS SDK  iPhone Developer (currently matches...[profile I have installed]) 

該裝置本身表示在方案下拉高達:

[設備名稱](4.2.1壓倒一切的基地SDK至5.0)

其他人遇到類似的問題或有任何建議嗎?

+0

嗯......我正在使用Xcode的最新副本,並在運行3.1.3的1g iPod touch上進行部署。 – 2011-06-16 20:38:56

回答

2

看起來你已經安裝了iOS 5.0 SDK。我讀的是對的嗎?如果是這樣,那是由蘋果開發者NDA管轄,不應在這裏討論。我會在開發者論壇發帖。

您是否有其他運行4.2.1的設備可以使用您的Xcode安裝?你有沒有其他的設備在所有的,可以使用你的Xcode安裝嗎?

+0

我確實有一臺iPad在使用此安裝時正常工作。 – 2011-06-17 19:43:08

+1

想想我想出了 - 構建設置下的默認架構是爲armv7。將其更改爲armv6允許我在Touch硬件上運行。 – 2011-06-17 19:43:49

+0

很高興你明白了! – jschmidt 2011-06-17 19:48:56

7

只是爲了促進Thomas對答案的評論,這可能是由於您的設備不支持CPU架構而導致的。 iPhone和iPhone 3G(以及同一代的iPod touch)不支持armv7。將「Archiectures」構建設置設置爲包含「armv6」以確保生成的二進制文件包含armv6代碼。

+0

這確實有幫助。您可以通過手動將其添加到armv6體系結構上運行的設備(字符串「armv6」)到您的構建設置中的體系結構列表中。 – 2011-10-11 07:59:41

+1

我看到了這個解決方案,並認爲你解決了我的問題 - 自從安裝iOS 5.0 SDK以來,我一直無法在iPhone 3G上安裝/測試應用程序。 (但是iPhone 4的效果很好)但是 - 這些架構被列爲「arm6 arm7」 - 我仍然陷入困境。 – radven 2011-11-03 05:58:01

+0

更新:我刪除了當前的體系結構並將它們重新創建爲「armv6 armv7」,現在它可以工作。好極了! – radven 2011-11-03 06:50:29

2

請注意,顯然架構設置區分大小寫。 我手動添加'Armv6',沒有任何工作。 改變這個'armv6'做了伎倆。

5

我與XCode 4.1.1和Ipod Touch 2nd gen有同樣的問題。我從一個模板開始,無法在我的硬件上運行它。在這裏找到所有的答案上計算器,但它最好有在一個地方所有必要的步驟:

  1. 你要添加的ARMv6架構到你的項目的設置(構建設置選項卡)。您可以將其設置爲「armv6 $(ARCHS_STANDARD_32_BIT)」或「armv6 armv7」,這並不重要。 $(ARCHS_STANDARD_32_BIT)只是一個變量,它等於最新XCode中的「armv7」。

  2. 不要更改基礎SDK, 「最新的iOS(iOS5.0)」 是好的。在「摘要」下,將「部署目標」更改爲4.0或任何您希望作爲最低版本的iOS版本。

  3. 在Xcode 4的新模板,在你的Info.plist,你必須改變標準設置。搜索「必需的設備功能」並刪除「armv7」。

如果你正在做的步驟1 + 2,但忘了第3步,你的設備日誌「可能不會收到USB消息」錯誤和錯誤信息,否則在XCode中。爲什麼它這樣做,而不是告訴你一個錯誤消息,提示你「所需的設備功能」是一個不同的問題。

簡而言之:蘋果公司在iOS 4.3的更新中開始放棄對armv6平臺的支持。較新的硬件使用不同的指令集armv7運行。如果你想用XCode 4支持iOS 4,你應該確保你也使用上面的步驟正確地構建了armv6的項目。

+0

偉大的總結。儘管如此,即使在按照這些步驟操作之後,我仍然把頭髮拉出來,直到我發現要做一次清潔(產品 - >清潔)。在此之後,該應用程序安裝並完美運行。 – BHSPitMonkey 2012-02-15 09:34:50