Android 简易崩溃日志保存

仅仅做了简单的保存到了本地而已;

根据需要可以继续增加功能:

  下一次启动上传到服务器;

  增加应用版本,机型系统版本信息等;

public class CrashSaver {

    public static CrashSaver crashSaver;
    private Context mContext;
    private Thread.UncaughtExceptionHandler mUncaughtExceptionHandler;

    public CrashSaver(Context context) {
        mContext = context;
        mUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
            @Override
            public void uncaughtException(Thread thread, Throwable ex) {
                saveLog(ex);
                mUncaughtExceptionHandler.uncaughtException(thread, ex);
            }
        });
    }

    private void saveLog(Throwable ex) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String timeStamp = sdf.format(new Date(System.currentTimeMillis()));
        File file = new File(Environment.getExternalStorageDirectory()
                + File.separator + "CrashLog"
                + File.separator + timeStamp + ".txt");
        if (!file.getParentFile().exists())
            file.getParentFile().mkdirs();
        try {
            StackTraceElement[] stes = ex.getStackTrace();
            StringBuilder sb = new StringBuilder("");
            for (StackTraceElement ste : stes)
                sb.append(ste.toString() + "\n");
            FileWriter writer = new FileWriter(file);
            writer.write(sb.toString());
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 应用启动时调用一次即可
    public static void init(Context context) {
        if (crashSaver == null)
            crashSaver = new CrashSaver(context);
    }
}
时间: 2024-12-28 13:22:43

Android 简易崩溃日志保存的相关文章

android app崩溃日志收集以及上传

源码获取请到github:https://github.com/DrJia/AndroidLogCollector 已经做成sdk的形式,源码已公开,源码看不懂的请自行google. 如果想定制适应自己app的sdk请自行fork. AndroidLogCollector android app崩溃日志收集sdk 1.0 作者:贾博士 崩溃日志收集方法: 1.LogCollector是lib包,在需要添加崩溃日志sdk的工程中导入此包. 2.导入lib后,在自己的工程的AndroidManife

捕获android程序崩溃日志

主要类: package com.example.callstatus; import java.io.File; import java.io.FileOutputStream; import java.io.PrintWriter; import java.io.StringWriter; import java.lang.Thread.UncaughtExceptionHandler; import java.lang.reflect.Field; import java.net.Unkn

Android 编译优化- 崩溃日志保存行号

出现的现象: 1. 因为Android 上传的错误堆栈(堆栈是一种数据结构) 没有行号,导致不好定位. 2. 上报的错误堆栈 是 Unknown Source,且没有行号 原因: 上报的时候 是有行号的,没有行号是因为最终输出的安装包里面根本没有行号信息. Java文件 -- javac编译 --> class 文件 -- progurad 混淆 --> 混淆后的 class文件. 要想 错误堆栈中 带行号,必须保证 两个环节 (javac编译 , progurad 混淆) 都保留下行号信息.

保存android程序崩溃日志到SD卡

private boolean writeToSDCard(Throwable ex) { boolean isDealing = false; if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { RandomAccessFile randomAccessFile = null; try { String fileName = SDCARDROOT + File.separator + "l

Android系统崩溃日志反馈(本文摘至CSDN原作者liuhe688)

大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的bug修复帮助极大,所以今天就来介绍一下如何在程序崩溃的情况下收集相关的设备参数信息和具体的异常信息,并发送这些信息到服务器供开发者分析和调试程序. 我们先建立一个crash项目,项目结构如图: 我们在这里故意制造了一个潜在的运

【Android应用开发】 Android 崩溃日志 本地存储 与 远程保存

示例代码下载 : http://download.csdn.net/detail/han1202012/8638801; 一. 崩溃日志本地存储 1. 保存原理解析 崩溃信息本地保存步骤 : -- 1. 自定义类实现 UncaughtExceptionHandler : public class CrashHandler implements UncaughtExceptionHandler; -- 2. 设置该自定义的 CrashHandler 类为单例模式 : // 单例模式 private

iOS 应用崩溃日志分析

通过本教程,你将学习到一些常见的崩溃日志案例,以及如何从开发设备和iTunes Connect上获取崩溃日志文件.你还将学习到符号化( symbolication),从日志追踪到代码 .你还将学习调试一个在待定情况下会闪退的应用. 让我们开始动手吧! 什么是崩溃日志,从哪里能得它? iOS设备上的应用闪退时,操作系统会生成一个崩溃报告,也叫崩溃日志,保存在设备上. 崩溃日志上有很多有用的信息,包括应用是什么情况下闪退的.通常,上面有每个正在执行线程的完整堆栈跟踪信息,所以你能从中了解到闪退发生时

iOS应用崩溃日志分析

转自raywenderlich 作为一名应用开发者,你是否有过如下经历? 为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应用商店后,还是有用户抱怨会闪退 ! 如果你跟我一样是个完美主义者,你肯定想将应用做到尽善尽美.于是你打开代码准备修复闪退的问题……但是,从何处着手呢? 这时iOS崩溃日志派上用场了.在大多数情况下,你能从中了解到关于闪退的详尽.有用的信息. 通过本教程,你将学习到一些常见的崩溃日志案例,以及如何从开发设备和

iOS应用崩溃日志分析-备用

作为一名应用开发者,你是否有过如下经历? 为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应用商店后,还是有用户抱怨会闪退 ! 如果你跟我一样是个完美主义者,你肯定想将应用做到尽善尽美.于是你打开代码准备修复闪退的问题……但是,从何处着手呢? 这时iOS崩溃日志派上用场了.在大多数情况下,你能从中了解到关于闪退的详尽.有用的信息. 通过本教程,你将学习到一些常见的崩溃日志案例,以及如何从开发设备和iTunes Connect上获