Android 异常封装,01.Android崩溃Crash封装库

如何引入该库

implementation 'cn.yc:ToolLib:1.0.0'

//GitHub代码

https://github.com/yangchong211/YCAndroidTool

初始化代码如下所示。建议在Application中初始化……

CrashHandler.getInstance().init(this, new CrashListener() {

/**

* 重启app

*/

@Override

public void againStartApp() {

CrashToolUtils.reStartApp1(App.this,1000);

//CrashToolUtils.reStartApp2(App.this,1000, MainActivity.class);

//CrashToolUtils.reStartApp3(AppManager.getAppManager().currentActivity());

}

/**

* 自定义上传crash,支持开发者上传自己捕获的crash数据

* @param ex ex

*/

@Override

public void recordException(Throwable ex) {

//自定义上传crash,支持开发者上传自己捕获的crash数据

//StatService.recordException(getApplication(), ex);

}

});

关于重启App的操作有三种方式api

//开启一个新的服务KillSelfService,用来重启本APP【使用handler延迟】

CrashToolUtils.reStartApp1(App.this,1000);

//用来重启本APP[使用闹钟,整体重启,临时数据清空(推荐)]

CrashToolUtils.reStartApp2(App.this,1000, MainActivity.class);

//检索获取项目中LauncherActivity,然后设置该activity的flag和component启动app【推荐】

CrashToolUtils.reStartApp3(AppManager.getAppManager().currentActivity());

关于获取崩溃目录api

//崩溃文件存储路径:/storage/emulated/0/Android/data/你的包名/cache/crashLogs

//崩溃页面截图存储路径:/storage/emulated/0/Android/data/你的包名/cache/crashPics

String crashLogPath = ToolFileUtils.getCrashLogPath(this);

String crashPicPath = ToolFileUtils.getCrashPicPath(this);

关于崩溃日志记录

日志记录路径:/storage/emulated/0/Android/data/你的包名/cache/crashLogs

日志文件命名:V1.0_2020-09-02_09:05:01_java.lang.NullPointerException.txt【版本+日期+异常】

关于跳转错误日志list列表页面

跳转日志列表页面如下所示,这里调用一行代码即可。点击该页面list条目即可进入详情

CrashToolUtils.startCrashListActivity(this);

那么如何获取所有崩溃日志的list呢。建议放到子线程中处理!!

List fileList = ToolFileUtils.getCrashFileList(this);

//如果是要自己拿到这些文件,建议根据时间来排个序

//排序

Collections.sort(fileList, new Comparator() {

@Override

public int compare(File file01, File file02) {

try {

//根据修改时间排序

long lastModified01 = file01.lastModified();

long lastModified02 = file02.lastModified();

if (lastModified01 > lastModified02) {

return -1;

} else {

return 1;

}

} catch (Exception e) {

return 1;

}

}

});

如何删除单个文件操作

//返回true表示删除成功

boolean isDelete = ToolFileUtils.deleteFile(file.getPath());

如何删除所有的文件。建议放到子线程中处理!!

File fileCrash = new File(ToolFileUtils.getCrashLogPath(CrashListActivity.this));

ToolFileUtils.deleteAllFiles(fileCrash);

如何获取崩溃文件中的内容

//获取内容

String crashContent = ToolFileUtils.readFile2String(filePath);

还有一些关于其他的api,如下。这个主要是方便测试同学或者产品,避免开发不承认那种偶发性崩溃bug……

//拷贝文件,两个参数分别是源文件,还有目标文件

boolean copy = ToolFileUtils.copyFile(srcFile, destFile);

//分享文件。这个是调用原生的分享

CrashLibUtils.shareFile(CrashDetailsActivity.this, destFile);

//截图崩溃然后保存到相册。截图---> 创建截图存储文件路径---> 保存图片【图片质量,缩放比还有采样率压缩】

final Bitmap bitmap = ScreenShotsUtils.measureSize(this,view);

String crashPicPath = ToolFileUtils.getCrashPicPath(CrashDetailsActivity.this) + "/crash_pic_" + System.currentTimeMillis() + ".jpg";

boolean saveBitmap = CrashLibUtils.saveBitmap(CrashDetailsActivity.this, bitmap, crashPicPath);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值