2014-02-16 172 views
1

我有一個iPhone應用程序,我已經開發和測試我的iPhone 4S。該應用程序在市場上發佈,一些用戶聲稱該應用程序在啓動時崩潰,因此無法使用。應用程序在iPhone 5S上崩潰,但不在iPhone 4S上。

我完成了與用戶對設備完全相同的操作,在iPhone 4S上運行相同版本的應用程序,並且無法使其崩潰。

我一直到用戶的家中,並將他們的手機插入我的電腦,以獲取日誌讀出,當我這樣做時,我得到的錯誤,我沒有得到我的手機和我的Mac。

對於我如何開始找到這樣的問題的解決方案,我完全不知所措。有人甚至有最微弱的想法嗎?

+0

你從這樣的設備得到崩潰報告嗎?您可以通過Xcode組織者得到它,或者用戶可以執行「設置」 - >「常規」 - >「關於」 - >「診斷和使用」 - >「診斷和使用數據」。在報告中搜索您的應用,複製並粘貼文本並通過電子郵件發送。一旦你有了這份報告,請把它添加到你的問題中。 – Kerni

回答

2
  1. 一個良好的開端將是整合崩潰日誌收集,崩潰報告SDK在您的應用程式,例如HockeyAppTestFlightCrittercismQuincyKit

    這會將您的崩潰日誌發送給您,因此您不必手動收集它們。這些工具還可以自動爲您提供崩潰日誌的符號,以便您可以在代碼中找到崩潰的來源。

  2. 您應該在發佈之前測試發佈版本。將發佈版本歸檔並將其作爲Ad-Hoc版本進行分發。您可以使用iTunes或Organizer將保存的IPA文件加載到您的iDevice。問題是,你可以測試一個發佈版本,這個發佈版本和你發佈到App Store的版本是一樣的(它們的簽名是不同的,但是構建配置是一樣的,除非你改變了)。

  3. iPhone 5S附帶64位A7處理器。您的iPhone 4是一款32位設備。最有可能的處理器架構並非如此,但正如蘋果所說:在發佈您的應用程序之前,您必須在實際的硬件上進行測試。只有當應用程序在設備上運行時,才能檢測到某些運行時更改。我建議您使用不同的型號更新您的一組測試設備。我仍然擁有一臺舊iPhone 3GS,非常適合查看性能問題。

+1

請注意,根據啓動崩潰的類型,沒有崩潰報告庫可以爲您提供這些報告。 HockeyApp提供了一些支持,請參閱http://support.hockeyapp.net/kb/client-integration-ios-mac-os-x/how-to-handle-crashes-during-startup-on-ios但是如果應用程序在達到'applicationDidFinishLaunching:'之前崩潰,則只有Apples崩潰報告可以提供幫助。 – Kerni

+1

有關64位A7處理器的說明:如果應用程序未在二進制文件中提供64位片,則它將以32位模式運行。所有的系統框架也將以32位模式運行! – Kerni

1

您是否考慮過在應用程序中安裝崩潰記錄器?這裏有很多(Flurry,TestFlight,Crittercism,Hockey App等)。

大部分安裝相當簡單 - 添加一個框架和幾行代碼。完成此操作後,您將(希望)能夠準確查看應用在用戶設備上的崩潰位置,而無需物理訪問它們。

2

其他人發表的一般性評論是正確的。使用預製SDK將應用程序崩潰記錄添加到您的應用程序中,並在實際設備上進行測試。我無法在這些問題上添加更多內容,但我會講一個關於我在其中一個應用中發現的類似問題的簡短故事,希望它能幫助您解決問題。

我們的應用主要是iPad2用戶。當iPad4發佈時,我們用戶的浪潮升級,他們開始遇到iPad2上沒有的問題。兩個網絡請求同時被解僱,其中一人的結果正在崩潰。我們最終發現這是一個併發錯誤。第一個請求的結果是「太快」處理,並且代碼到達了與其他請求處理程序不是線程安全的代碼的關鍵部分。

雖然這個錯誤仍然可以在iPad2上,如果網絡延遲波動恰到好處,它從來沒有發生過這種方式。 iPad4幾乎每次都發生。

相關問題