在崩溃时写入sd卡中的logcat消息

时间:2013-05-05 15:09:17

标签: android

我正在开发一个Android应用程序。我的应用经常崩溃。我想在sd卡中保存logcat消息,同时应用程序崩溃以找到根本原因。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

一些可能有助于您迈向全自动崩溃日志收集的想法。我们还没有在这里推出一个完整的系统,我们已经有足够的运气,只是在它们崩溃之后抓住设备或要求我们的QA小组提供更多信息,但是:

  • ACRA相对容易实现,即使你没有实现它,源代码也会在github上供你浏览。
  • 相关问题Android crash reporting library (pre Froyo)包含许多链接和解决方案,包括android-remote-stacktrace,上述ACRA,Android-Error-Reporter以及其他商业解决方案。
  • 有些设备自动捕获崩溃输出,您可以通过adb pull /data/log/dumpstate_app_native.txt.gz或类似设备获取它 - 路径应该出现在logcat中。但是,这些往往会在每次崩溃时被覆盖。 (如果有人能够回答这是特定于制造商的功能还是在某些版本的android核心中出现的东西,我很想知道!)
  • 您可以获得一个logcat应用,例如aLogCat或许多其他人,可以在您的设备上安装。
  • TestFlight将在Android方面进入测试阶段;他们在iOS方面有崩溃报告,也应该在Android方面,并且使用他们的服务还有其他各种好处 - 而且我们的体验非常容易集成。

如果您在自己的应用内部滚动自己,则需要READ_LOGSWRITE_EXTERNAL_STORAGE清单权限(即使是本地版本),然后您可以使用日志记录API或常规File.copy或甚至系统调用logcat本身。在这个问题的“相关”链接中有很多选项和示例:

希望这会有所帮助。

答案 1 :(得分:0)

其他问题涵盖了阅读您自己的logcat消息。

how can i access logcat file on device Read logcat programmatically within application

为了在您的应用崩溃时执行此操作,您需要安装defaultUncaughtExceptionHandler。

您在创建活动或创建时的应用程序。添加以下代码。

        final Thread.UncaughtExceptionHandler oldUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
    Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(Thread thread, Throwable throwable) {
            // DO your error handling here. 
            //  Write your log cat, or write your exception stack trace here. 

            // Get rid of this line if you don't want a popup letting you know that your app has crashed. 
            oldUncaughtExceptionHandler.uncaughtException(thread,throwable);
        }
    });