2011-12-09 49 views
1

當編譯iOS應用程序,一切都在下列情況下看起來不錯:的iOS 4.2.1視覺錯誤在發佈模式,但不能調試模式或iOS 5

  • 的iOS 5.0.1,調試模式
  • iOS的5.0.1,發佈模式
  • 的iOS 4.2.1,調試模式

當我建立一個檔案在發佈模式,並在iOS 4.2.1上運行,也有視覺問題,衆說紛紜。大多數情況下,這些由屏幕上的文本位置(大部分爲UILabels)組成。我正在測試物理設備上的4.2.1版本構建; iPod touch第二代。用Xcode構建版本4.2.1(4D502)。

該項目合併了一些第三方庫。

我已經嘗試以下方法,沒有積極的效果,以解決這些問題:

  • 刪除/修改的所有構建特定的發佈版本設置相匹配的調試版本,包括代碼優化級別,鏈接器標記,調試符號,其他C/C++標誌和所有預處理器宏。
  • 交換可用的編譯器之間:LLVM GCC 4.2,而蘋果LLVM編譯器3.0
  • 在構建階段檢查任何不尋常的,並建立規則
  • 刪除了所有參數和診斷,將已應用到調試版本在「管理方案」窗口中。

我不確定構建過程的其他方面可能以這種方式干擾應用程序,特別是當構建設置在此時幾乎完全相同時。有任何想法嗎?

UPDATE

我發現,生成項目使用Xcode中的最新測試版本沒有問題。我認爲這指向了一個特定於Xcode 4.2.1中包含的Clang版本的問題。由於Apple不允許使用Xcode的beta版本編譯應用程序,因此我仍在4.2.1中尋找解決方案。

回答

2

根據蘋果開發者論壇收到的反饋,它可能是Clang的問題,我試着在Xcode 4.2.1中切換回LLVM GCC 4.2。

這次切換編譯器後,我退出Xcode並從〜/ Library/Developer/Xcode/DerivedData中刪除所有文件,以確保沒有中間體被留下。

從那時起,應用程序在iOS 4.2.1的發佈模式下正常工作。

1

這意味着您的應用程序無法支持armv6架構。除了armv7之外,確保所有庫支持armv6。視覺問題的確切性質可能指向特定的圖書館。

+0

如果它在調試模式下運行完美,爲什麼會指向體系結構問題? 「架構」和「有效架構」的構建設置包括我的項目和所有子項目中的armv6和armv7。 – jverdi

+1

您剛纔提到您正在測試iPod touch第二代4.2.1發行版。這個設備的區別在於它支持armv6。 –

0

我遇到了同樣的問題,不想切換回GCC(這確實消除了問題)。經過一些進一步的研究,我遇到了這個解決方案:https://stackoverflow.com/a/8391405/1273518這對我來說非常合適!

+0

嗨。如果您建議可能有重複,請不要發佈答案,而要發表評論,或者引用已接受的答案並解釋適合您的方式。 – rdurand

相關問題