栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android Crash 监控方案

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android Crash 监控方案

Crash 监控方案
1 java
1 UncaughtExceptionHandler

package com.enjoy.crash2;
import android.content.Context;
import java.io.File;

public class CrashReport {

    public static void init(Context context) {
        Context applicationContext = context.getApplicationContext();
        CrashHandler.init(applicationContext);
    }

    public static void testJavaCrash() {
        int i = 1 / 0;
    }
}

package com.enjoy.crash2;

import android.content.Context;

import androidx.annotation.NonNull;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class CrashHandler implements Thread.UncaughtExceptionHandler {

    private static Thread.UncaughtExceptionHandler defaultUncaughtExceptionHandler;
    private static Context mContext;

    private CrashHandler() {

    }

    public static void init(Context applicationContext) {
        mContext = applicationContext;
        defaultUncaughtExceptionHandler =
                Thread.getDefaultUncaughtExceptionHandler();
        Thread.setDefaultUncaughtExceptionHandler(new CrashHandler());
    }

    @Override
    public void uncaughtException(@NonNull Thread t, @NonNull Throwable e) {
        File dir = new File(mContext.getExternalCacheDir(), "crash_info");
        if (!dir.exists()) {
            dir.mkdirs();
        }
        long l = System.currentTimeMillis();
        File file = new File(dir, l + ".txt");

        try {
            PrintWriter pw = new PrintWriter(new FileWriter(file));
            pw.println("time: "+time);
            pw.println("thread: " + t.getName());
            pw.println(getPhoneInfo());
            e.printStackTrace(pw);
            pw.flush();
            pw.close();
        } catch (IOException ioException) {
            ioException.printStackTrace();
        } finally {
            if (defaultUncaughtExceptionHandler != null) {
                defaultUncaughtExceptionHandler.uncaughtException(t, e);
            }
        }
    }
    private String getPhoneInfo() throws PackageManager.NameNotFoundException{ 
    			PackageManager pm = mContext.getPackageManager(); 
    			PackageInfo pi = pm.getPackageInfo(mContext.getPackageName(), PackageManager.GET_ACTIVITIES); 
    			StringBuilder sb = new StringBuilder(); 
    			//App版本 
    			sb.append("App Version: "); 
    			sb.append(pi.versionName); 
    			sb.append("_"); 
    			sb.append(pi.versionCode + "n"); 
    			//Android版本号 
    			sb.append("OS Version: "); 
    			sb.append(Build.VERSION.RELEASE); 
    			sb.append("_"); 
    			sb.append(Build.VERSION.SDK_INT + "n"); 
    			//手机制造商 
    			sb.append("Vendor: "); 
    			sb.append(Build.MANUFACTURER + "n"); 
    			//手机型号 
    			sb.append("Model: "); 
    			sb.append(Build.MODEL + "n");
	}

Applciation中 初始化
CrashReport.init(this);


2 native
1 BreakPad 处理
3 墓碑机制
程序奔溃后linux产生一个记录奔溃的现场信息的文件
路径 data/tombstones

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/337224.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号