2017-05-30 67 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获得的同样的错误。 –

相关问题