2015-02-17 61 views
24

我建立了一個快速的應用程序,它大量使用了iPhone 6,iPhone 6 plus和iPhone 5設備和在Xcode提供的所有模擬器進行測試。該應用運行良好,不會在本地上傳時崩潰。 (iOS 8)應用程序崩潰只有在Testflight構建

我終於提交了一個TestFlight的構建。在通過Testflight構建下載應用程序後,該應用程序在同一地點始終崩潰。

是否有一個地方上傳建立不同的運行速度比在本地創建構建了一個已知的問題?我怎樣才能用Testflight構建來調試這個問題?

+0

曾經有同樣的問題。我在我的設備上刪除了應用程序並重新安裝了它。這有幫助。你嘗試過嗎? – croX 2015-02-17 20:27:33

+0

是的,我刪除了一切,甚至擦去了我的一個設備。在使用Testflight下載應用程序的所有設備上,它會在相同的地方崩潰。當我在本地安裝構建(通過Xcode)時,它從不崩潰。 – Taylor 2015-02-17 20:29:11

+0

如果應用程序在使用時崩潰,那麼你的代碼中有一個錯誤。您需要爲其他人提供符號化的崩潰報告,以便提供有關正在發生的事情的提示。 – Kerni 2015-02-17 20:30:27

回答

3

我通過改變迅速編譯器優化從fastestnone解決的問題。我不確定這是否是一個理想的長期解決方案,但構建不再崩潰。

49

我想它是一個迅速的編譯器問題。爲了驗證第一次去編輯方案那麼構建配置更改爲發佈模式運行選項卡,然後在本地安裝版本。你會知道到底發生了什麼。

+11

我實際上通過將swift編譯器優化從最快更改爲無,解決了問題。我不確定這是否是一個理想的長期解決方案,但構建不再崩潰。 – Taylor 2015-02-18 18:37:14

+0

這裏同樣的問題。你如何改變「swift編譯器優化」? – Vakas 2015-10-31 11:25:28

+2

1)構建設置 2)Swift編譯器 - 代碼生成 3)優化級別 – Pugin 2016-09-20 22:27:10

1

如果其他人是否有同樣的問題,這裏就是我的修補程序是:

我終於得到這個問題降低到循環使用if語句,類似於此 -

while(condition) 
{ 
    if (check) 
    { 
     code! 
    } 
    //There was no code here 
} 

注意循環結尾沒有代碼(註釋的位置)。一旦我添加了一個隨機位的代碼(在這種情況下,增加一個變量輸出),問題停止了。

while(condition) 
{ 
    if (check) 
    { 
     code! 
    } 
    i += 1; 
    output statement 
} 

我覺得這是一個編譯器錯誤,不然我的「修復」不應該是固定的。但在這裏它可以幫助其他人!

+2

不是很有用......你應該清理它,然後重新運行比這個冗餘編碼。 – nferocious76 2015-11-28 13:25:39

2

這可能是位碼相關的問題。請檢查您的所有第三方庫支持位碼,然後再只設置位碼到YES,否則設置爲NO

其實位編碼是編譯程序的中間表示。您上傳到iTunes Connect的包含位碼的應用程序將在App Store上編譯和鏈接。

+0

我的情況!謝謝! – Bimawa 2017-10-31 10:04:47

1

,而不是在空i += 1; while循環。

我做這在我的空while循環:RunLoop.current.run(until: Date(timeIntervalSinceNow: 1))

而且現在TestFlight應用不會彈!

更短的時間也可能工作,如:RunLoop.current.run(until: Date(timeIntervalSinceNow: 0.25))