如何从我的Android应用程序中获得崩溃数据(至少堆栈跟踪)?至少在我自己的设备上工作时可以通过电缆检索,但理想的情况是,从我的应用程序在野外运行的任何实例中都可以,这样我就可以改进它,使它更可靠。
当前回答
我知道这个问题太老了,希望我的回答对其他有同样问题的人有帮助…
试试Crashlytics吧。它将深入了解所有崩溃的所有设备有你的应用程序,并通过电子邮件发送通知给你..最好的部分是它完全免费使用..
其他回答
如果你想立即得到答案,你可以使用logcat
$adb shell logcat -f /sdcard/logoutput.txt *:E
如果您的日志中现在有太多垃圾,请先尝试清除它们。
$adb shell logcat -c
然后尝试运行您的应用程序,然后再次logcat。
使用这个来捕获异常细节:
String stackTrace = Log.getStackTraceString(exception);
保存在数据库中,并维护日志。
好吧,我看了rrainn和Soonil提供的样本,我找到了一个解决方案 这不会破坏错误处理。
我修改了CustomExceptionHandler,以便它从我们关联的新线程中存储原始的UncaughtExceptionHandler。在新的“uncaughtException”的末尾- 方法,我只是使用存储的UncaughtExceptionHandler调用旧函数。
在DefaultExceptionHandler类中,你需要这样的东西:
public class DefaultExceptionHandler implements UncaughtExceptionHandler{
private UncaughtExceptionHandler mDefaultExceptionHandler;
//constructor
public DefaultExceptionHandler(UncaughtExceptionHandler pDefaultExceptionHandler)
{
mDefaultExceptionHandler= pDefaultExceptionHandler;
}
public void uncaughtException(Thread t, Throwable e) {
//do some action like writing to file or upload somewhere
//call original handler
mStandardEH.uncaughtException(t, e);
// cleanup, don't know if really required
t.getThreadGroup().destroy();
}
}
在http://code.google.com/p/android-remote-stacktrace上对代码进行了修改 你有一个很好的工作基地,登录到你的web服务器或 sd卡。
我知道这个问题太老了,希望我的回答对其他有同样问题的人有帮助…
试试Crashlytics吧。它将深入了解所有崩溃的所有设备有你的应用程序,并通过电子邮件发送通知给你..最好的部分是它完全免费使用..
有一个叫做fabric的工具,这是一个崩溃分析工具,它可以让你在应用程序实时部署和开发期间获得崩溃报告。 将这个工具添加到您的应用程序也很简单。 当应用程序崩溃时,可以从fabric查看崩溃报告。IO仪表盘。THW报告被自动捕获。它不会询问用户的权限。他/她是否想要发送错误/崩溃报告。 这是完全免费的… https://get.fabric.io/
推荐文章
- BottomSheetDialogFragment的圆角
- 在应用程序启动时出现“无法获得BatchedBridge,请确保您的bundle被正确打包”的错误
- 我如何改变默认对话框按钮的文本颜色在安卓5
- 更改单选按钮的圆圈颜色
- 如何在android中复制一个文件?
- adb找不到我的设备/手机(MacOS X)
- 如何在新的材质主题中改变背面箭头的颜色?
- androidviewpager与底部点
- 相同的导航抽屉在不同的活动
- 如何从视图中获得托管活动?
- 单一的TextView与多种颜色的文本
- 如何在非活动类(LocationManager)中使用getSystemService ?
- 在清单中注册应用程序类?
- Android:从数组中编程创建旋转器
- 如何在Visual Studio中找到堆栈跟踪?