我正在为一个构建Android应用程序的组织做志愿者。我们即将在google play上发布一个BETA版本。谷歌播放开发者控制台界面中有一个名为" Crashes和ANRs" 的部分,我希望我们可以使用用于在应用程序中查找错误
现在提出问题:
我们如何在应用程序内部编写异常处理代码,以便与Google开发人员控制台中的此部分一起使用? (在此上下文中的任何其他有用提示都非常受欢迎,我们希望使用此界面查找错误)
例如,使用Log.d(tag, msg, throwable)
方法是一种好方法吗? (请注意最后的扔掉)。
我们可以从自定义异常类或类中受益吗?
亲切的问候,Tord
答案 0 :(得分:0)
Play Developer Console中崩溃和ANR的问题在于,只有用户决定报告它们时才会显示它们。如果您想在应用程序崩溃的任何时候获得崩溃报告,可以使用一些库。
ACRA和Crashlytics是我建议看看的两个。两者都被Play商店中的大量应用程序使用。
答案 1 :(得分:0)
这是一个例子,说明如果你在" Crashes和ANRs"中打开Proguard,崩溃日志会是什么样子。
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
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 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
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: Attempt to invoke virtual method 'java.util.ArrayList angel.twitch.contactnumberformatter.app.b.b.b()' on a null object reference
at angel.twitch.contactnumberformatter.app.a.a.h.a(Unknown Source)
at angel.twitch.contactnumberformatter.app.a.h.a(Unknown Source)
at angel.twitch.contactnumberformatter.app.a.h.doInBackground(Unknown Source)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
... 4 more
你将不得不与崩溃一起工作。 还要注意一些代码是混淆的? (a.a.h.a的一部分" angel.twitch.contactnumberformatter.app.a.a.h.a")
您需要查看proguard映射文件(mapping.txt)以查找相应的方法。然后从那里追溯你的方式。
mapping.txt可以在构建输出文件夹(http://developer.android.com/tools/help/proguard.html)中找到。
是的,您可以执行throw并设置异常消息。您需要提醒您的Beta版测试人员提交崩溃报告。只需记住在生产中删除这些代码(您不希望生产应用程序崩溃)。