概述
xCrash 是爱奇艺开源的一个用于监控 Java 和 Native 崩溃的组件,只需要在 Application 类中初始化即可启用:
XCrash.init(this);
复制代码
也可以对一些选项进行配置:
XCrash.InitParameters params = new XCrash.InitParameters();
// 通用配置
params.setAppVersion(mConfig.getAppVersion())
.setPlaceholderCountMax(DEFAULT_PLACEHOLDER_MAX_COUNT)
.setPlaceholderSizeKb(DEFAULT_PLACEHOLDER_SIZE_KB)
.setLogFileMaintainDelayMs(DEFAULT_LOG_FILE_MAINTAIN_DELAY_MS);
// Java 崩溃配置
params.setJavaRethrow(true)
.setJavaDumpFds(false)
// ...
.setJavaCallback(callback);
// Native 崩溃配置
params.setNativeRethrow(true)
// ...
.setNativeCallback(callback);
// ANR 配置
params.setAnrCallback(callback);
XCrash.init(mConfig.getApp(), params);
复制代码
崩溃发生后的 json 示例如下:
{
"logcat":"...",
"java stacktrace":"...",
"Brand":"vivo",
"Model":"vivo Y66",
"pid":"18227",
"network info":"...",
"memory info":"...",
"App version":"1.2.3-beta456-patch789",
"tname":"main ",
"pname":"xcrash.sample",
"Manufacturer":"vivo",
"Rooted":"No",
"open files":"...",
"other threads":"...",
"OS version":"6.0.1",
"ABI list":"armeabi-v7a,armeabi",
"Start time":"2020-06-01T14:47:11.768+0800",
"foreground":"yes",
"tid":"18227",
"Build fingerprint":"vivo\/PD1621\/PD1621:6.0.1\/MMB29M\/compiler04111924:user\/release-keys",
"App ID":"xcrash.sample",
"Crash type":"java",
"API level":"23",
"Crash time":"2020-06-01T14:47:36.029+0800",
"Tombstone maker":"xCrash 2.4.9"
}
复制代码
可自定义回调处理逻辑,比如将信息上报给服务器:
ICrashCallback callback = new ICrashCallback() {
@Override
public void onCrash(String logPath, String emergency) {
if (emergency != null) {
sendReport(logPath, emergency);
}
}
}
private void sendReport(String logPath, String emergency) {
// 解析日志文件,生成 json 报告
Map map = TombstoneParser.parse(logPath, emergency);
String cras