2017-05-30 68 views
0

我最近嚮應用商店提交了應用。我認爲應用程序是由Google設備自動測試的。我在Play商店開發人員控制檯中發現了很多崩潰(大約70次)。當我在我的真實設備上進行測試時,我沒有遇到任何崩潰。如何避免崩潰/下一次從列表中刪除崩潰。開發者控制檯中顯示崩潰

我的應用程序已登錄,無需登錄用戶,用戶無法前往儀表板。但崩潰報告與應用程序內的相關(我的意思是在登錄後)。

如何處理這種情況?我們是否需要編寫任何測試用例來避免谷歌設備崩潰,因爲我們沒有崩潰。 `

@Override 
      protected String doInBackground(Void... voids) { 
       if (CropMainActivity.cropped == null) { 
        return ""; 
       } 
       return compress(CropMainActivity.cropped); 
      } 




java.lang.RuntimeException: 
    at io.fabric.sdk.android.services.concurrency.AsyncTask$3.done(AsyncTask.java:323) 
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) 
    at java.util.concurrent.FutureTask.setException(FutureTask.java:222) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
    at io.fabric.sdk.android.services.concurrency.AsyncTask$SerialExecutor$1.run(AsyncTask.java:254) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
    at java.lang.Thread.run(Thread.java:818) 
Caused by: java.lang.NullPointerException: 
    at com.myapp.fragment.MyProfileFragment.compress(MyProfileFragment.java:250) 
    at com.myapp.fragment.MyProfileFragment.access$100(MyProfileFragment.java:51) 
    at com.myapp.fragment.MyProfileFragment$2.doInBackground(MyProfileFragment.java:185) 
    at com.myapp.fragment.MyProfileFragment$2.doInBackground(MyProfileFragment.java:181) 
    at io.fabric.sdk.android.services.concurrency.AsyncTask$2.call(AsyncTask.java:311) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 

` enter image description here

+0

你沒有在你的真實設備中發現任何崩潰,並不自動錶示,在野外沒有崩潰。爲什麼不修理它們而不是試圖「隱藏」它們? – JacksOnF1re

+1

谷歌的自動測試無法登錄,所以你的故事有點奇怪。 '但是崩潰報告與應用程序內部相關(我的意思是在登錄後)。「當谷歌設備無法登錄時,您如何在登錄後發生崩潰? – Denny

+0

請參閱下面的CommonsWare的答案。 – JacksOnF1re

回答

3

如何避免崩潰/由下一次從列表中刪除的崩潰。

分析堆棧跟蹤,嘗試識別錯誤,然後修復錯誤。通過修復錯誤向您的應用發送更新。

然後,正如傳說中的洗髮水瓶裝說明書所述,「泡沫,沖洗,重複」,因爲在未來您將遇到同樣的問題,很可能。

我認爲應用程序是由Google設備自動測試的。

它並不真正重要的崩潰是否來自普通用戶來說,從某種自動化測試引擎,或者從鼬跳上冰毒。如果您的應用在現場崩潰,則應用中存在一個錯誤。如果沒有別的,你會錯過一些防禦性的編程步驟,在崩潰之前檢測問題,然後將用戶重定向到其他地方。

我的應用程序已登錄,沒有登錄用戶,用戶無法進入儀表板。

也許在你的應用程序中的錯誤是,有辦法去儀表盤無需登錄。例如,可能是儀表盤的活動有一個<intent-filter>或以其他方式出口,這意味着任何人,在任何時間,可以開始那個活動。或者,儀表板活動假定某些static字段將填充,但如果應用程序的進程在後臺中終止,則情況可能並非如此。

+0

非常感謝。我已更新日誌。方法已經是空的檢查。爲什麼我們仍然崩潰? –

+0

@AndroidDeveloperWorld:由於沒有人知道'MyProfileFragment.java'裏面的第250行是什麼,所以沒有人能真正幫助你。一般來說,你的'null'檢查可能不會有效,因爲你顯然是處於多線程的情況下(你的'null'檢查似乎在'AsyncTask'的'doInBackground()'中)。如果另一個線程在'null'檢查和該字段的使用之間將此'static'字段設置爲'null'會發生什麼? – CommonsWare

+0

好的,我同意可能會有一些代碼問題。但是如何在不提供數據的情況下測試流程。由於我的api電話需要手機號碼/登錄作爲參數,並且應該在我的服務器(手機號碼)中。我已經看到,在蘋果商店中,我們需要提供虛擬憑據來測試Apple團隊的應用程序。 Playstore中有什麼?當我們用正確的憑證登錄後手動測試時,一切都很好。否則,我們可能會得到谷歌PlayStore獲得的同樣的錯誤。 –

相關問題