2013-03-20 289 views
3

我有一個用戶(帶有iPhone 5)報告說,我的應用程序在屏幕變黑(閃屏爲黑色)後約15秒啓動時崩潰。用戶下載了一個TestFlight版本,其中我在App代理中包含了檢查點,但是我沒有證據證明這些檢查點是交叉的,我從來沒有收到崩潰報告。應用程序崩潰但沒有TestFlight崩潰報告

我將故事板上的入口點更改爲空白視圖控制器,現在我可以看到檢查點正在交叉。由於故事板資源的加載時間過長,Watchdog暫停應用程序,但所有圖像都是根據需要實時構建的,除了四個小小的標籤欄圖標之外。有幾個音頻文件,但它們是按需加載的。我想不出任何可能造成延誤的其他資源。沒有人報告過這個問題,我很難過。

任何洞察力的讚賞,特別是爲什麼我沒有看到來自TestFlight的崩潰報告或檢查點。

+0

像你說的,它肯定聽起來像看門狗殺死你的應用程序花費太多時間啓動。 – 2013-03-20 14:32:26

回答

7

你的假設是正確的,監督者殺死了應用程序。這是因爲應用程序無法正常啓動,並且主線程被阻塞,或者由於沒有加載UI而無法進行用戶交互。

據我瞭解你的描述,你正在加載時創建資源?並且可能在主線程上執行此操作?您應該嘗試將資源飢餓的代碼卸載到後臺線程中,而不是在主線程上執行此操作,而較老/較慢的設備可能需要比預期更長的時間。 UI應該始終是響應式的,主線程永遠不應該接近任何可能接近一秒處理的任務。

另一個原因可能是故事板和視圖控制器之間的鏈接斷開,並且它實際上從未加載該設備類型。

但是沒有更多的細節,不可能說出到底發生了什麼。

一般來說:如果應用程序被iOS系統殺死,由於啓動時間超過或由於分配太多內存而導致看門狗,那麼只有iOS可以生成崩潰報告。

問題是,該應用程序被殺害,在這種情況下,該過程被殺害。這個過程中運行的任何代碼都無法檢測到。而且,除了基於iOS系統的崩潰記者之外,iOS上的崩潰報告會在被殺死的同一個應用程序進程中運行,他們無法報告或編寫任何崩潰報告。

下面的頁面提供了一些這方面的更多細節:http://support.hockeyapp.net/kb/how-tos-faq/which-types-of-crashes-can-be-collected-on-ios-and-os-x(雖然與上下文PLCrashReporter,這是不使用Testflight但一般的語句是相同的)

+0

謝謝,這在TestFlight無法在進程終止時發送數據時很有意義。該應用程序在啓動時使用Core Graphics和UIKit繪製一些簡單的圖形。我將集中精力在那裏。我會更新這個問題,以表明有問題的設備是iPhone 5. – 2013-03-20 14:58:14

+1

iPhone 5應該是最快的。所以我建議詢問用戶他是否可以從iOS生成的實際設備提供崩潰報告。可以將設備同步到Mac/PC,也可以從診斷設置部分複製粘貼。關於如何做到這一點,有很多描述。然後你會看到殺人的真正原因。 – Kerni 2013-03-20 15:05:55

+0

謝謝你。用戶沒有要同步的機器,但是我會讓他將崩潰報告粘貼到電子郵件中。我不知道這是可能的。非常感激。 – 2013-03-20 15:13:23