2010-06-03 60 views
4

填滿我們的應用程序幾次之後,我們繼續會收到以下消息:未知和不可再現的崩潰導致的App Store拒絕

感謝您提交我的應用程序的 的App Store。我們審覈了您的 應用程序,並確定我們的 無法將此版本的iPad 應用程序發佈到應用程序商店,因爲我的應用程序在運行iPad的iPad上崩潰 iPhone OS 3.2和Mac OS X 10.6.2。我的 應用程序在啓動時崩潰。 不幸的是,崩潰日誌沒有生成 。

但是,使用AdHoc權利退出相同的構建並將構建加載到設備上不會產生此類崩潰。經過多次嘗試之後,應用程序根本不會像審閱者所報告的那樣崩潰。此外,審閱者不會提供任何可能由SpringBoard生成的有用日誌記錄,例如退出狀態或事件(如果它已適用於任何其他設備)。沒有調用顯式地退出或退出代碼行中的應用程序,但應用程序在啓動時終止。

什麼可能導致應用程序以這種方式終止? 在什麼條件下測試的應用程序可能無法在開發環境下找到? 這可能是簽名問題的結果,提交驗證系統根本無法抓住?

在此先感謝。

+0

由於公司政治,我不能提交500次,希望能夠解決這個問題。我想我會放棄一些遠程日誌記錄,以便有時候它會發送一個快速的帖子發送到一個小的服務器,所以我可以跟蹤他們到底有多遠(或者甚至他們進入了代碼)。 – 2010-06-04 18:23:13

回答

4

經過幾個星期的爭鬥後,申請終於獲得批准。關鍵:簽署腐敗。因此,爲什麼應用程序會啓動(或者至少看起來是通過顯示啓動畫面開始的),然後在沒有崩潰日誌的情況下突然消失。它失敗了Springboard的預檢嘆息檢查。

請記住檢查簽署問題的好工具。它告訴如果應用程序具有有效簽名:

codesign -vvvv MyApp.app 

當我構建的應用程序,我將它cp到網絡存儲設備,用我們的產品經理會拉下來,並提交給蘋果公司。如果在NAS上解壓縮,代碼簽名是有效的。但是,如果您將壓縮的應用程序放回NAS並驗證它,則會失敗。

課程:利用新的XCode實用程序來提交應用程序。

0

哎唷!這是一個艱難的。之前我曾經遇到過這種情況,但是當我切換到其他設備(iPhone 3G vs 3G等)時,它似乎是可以重現的。就你而言,這聽起來像是你只有iPad,所以這可能沒有幫助。我想,3G和Wifi之間有區別,但如果這導致了一個而不是另一個的崩潰,我會非常驚訝。

如果您認爲蘋果公司沒有做好自己的任務,那麼您可以嘗試的一件事是更改二進制名稱並在其他應用程序名稱/記錄下重新提交。看看你是否得到相同的迴應。如果你有相同的評論者,你可能會這樣做,但我認爲你很有可能會用不同的評論者使用新的應用程序。只需將您的應用發佈日期設置在遙遠的將來一段時間,並且如果他們批准,它就永遠不會顯示在應用商店中。如果新應用程序因相同原因而被拒絕,則您有工作要做,但如果他們確實批准了該應用程序,那麼我會與他們通電話並指出該差異。

1

我認爲你有兩種選擇:儘量用別人提及的工具重現缺陷,或者在現場捕捉這些崩潰。

PLCrashReporter將陷入未捕獲的異常並存儲所有相關信息。下次您的應用程序運行時,它可以發送崩潰報告,然後您可以符號化並查看堆棧跟蹤。

2

幾點建議:

  1. 儘量使用靜態分析的泄漏的工具,看看是否有任何內存泄漏,或者你沒有看到的問題。

  2. 您的應用程序是否使用Web服務?這一次發生在我身上,因爲蘋果當天正在審查網絡服務停止運行的應用程序。這會導致崩潰。如果這是你想添加一些東西來解決這個問題。

  3. 最後,在Apple發送的日誌中,他們是否向您發送了dsym文件?如果他們確實可以從命令行運行atos,它會將地址轉換爲符號。這會告訴你它正在崩潰的線程和符號。

+0

1.儀器不顯示任何問題。 2. UIWevView是主要元素,但所有連接問題都被困住並且處理得當(也會導致日誌報告崩潰)。 3. dSym我有但沒有崩潰日誌來運行它,因爲沒有生成。 – 2010-06-03 23:51:07

0

我的方法是確保編譯在靜態分析器(這不是可選的,它會節省您的時間!)和構建本身絕對乾淨。然後按照CocoaDev' NSZombie page中所述設置所有內容。然後確保你有一個運行3.2(實際的硬件,而不是模擬器)和測試,測試,測試的iPod。使用可用的網絡進行操作,無法使用,設備接近完整且全新恢復,您可以想到所有其他變體。在調試器處於活動狀態並且發佈版本斷開連接時運行它。使用Leaks,Instruments和所有其他工具在那裏窺視並更好地瞭解正在發生的事情。如果你耗盡了所有的可能性,你將不得不求助於Apple的更多細節,但我敢打賭你會發現一個問題 - 在調試這樣的問題時最重要的事情之一就是儘量忘記你認爲自己知道的一切,從一開始就開始。

+0

在真實設備上運行的靜態分析儀和儀器都可以乾淨地報告。 「儘量忘記你認爲你知道的所有事情,並從頭開始」這是我們在調試時應該記得的一個優秀點。 – 2010-06-04 18:16:06

1

確保您的各種設置進行測試:與WiFi禁用/啓用,對3G禁用,飛行模式/關閉,禁止位置服務等

作爲最後的手段,假定有一個問題在啓動時執行的代碼中。刪除一半的啓動代碼,在遠期設置發佈日期(以防萬一獲得批准),然後重新提交併查看它們是否有相同的問題。如果不是這個問題是在你刪除的一半...這是一個二進制搜索。

+0

不是一個壞主意。它很早就崩潰了,所以我可以在啓動過程中刪除一些代碼塊,看看是否有效。 – 2010-06-04 18:20:33