Android 应用崩溃捕获工具 xCrash

源代码:https://gitee.com/mirrors/xCrash 

xCrash

xCrash 能为安卓 app 提供捕获 java 崩溃,native 崩溃和 ANR 的能力。不需要 root 权限或任何系统权限。

xCrash 能在 app 进程崩溃或 ANR 时,在你指定的目录中生成一个 tombstone 文件(格式与安卓系统的 tombstone 文件类似)。

Android 应用崩溃捕获工具 xCrash_第1张图片

xCrash 已经在 爱奇艺 的很多安卓 app(包括爱奇艺视频)中被使用了很多年。

README English Version

特征

  • 支持 Android 4.0 - 10(API level 14 - 29)。
  • 支持 armeabi,armeabi-v7a,arm64-v8a,x86 和 x86_64。
  • 捕获 java 崩溃,native 崩溃和 ANR。
  • 获取详细的内存使用统计信息。
  • 通过正则表达式设置需要获取哪些线程的信息。
  • 不需要 root 权限或任何系统权限。

概览图

架构

Android 应用崩溃捕获工具 xCrash_第2张图片

捕获 native 崩溃

Android 应用崩溃捕获工具 xCrash_第3张图片

捕获 ANR

Android 应用崩溃捕获工具 xCrash_第4张图片

使用

1. 增加依赖。

dependencies {
    implementation 'com.iqiyi.xcrash:xcrash-android-lib:2.4.3'
}

2. 指定一个或多个你需要的 ABI。

android {
    defaultConfig {
        ndk {
            abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
        }
    }
}

3. 初始化 xCrash。

Java

public class MyCustomApplication extends Application {

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        
        xcrash.XCrash.init(this);
    }
}

Kotlin

class MyCustomApplication : Application() {

    override fun attachBaseContext(base: Context) {
        super.attachBaseContext(base)

        xcrash.XCrash.init(this)
    }
}

Tombstone 文件默认将被写入到 Context#getFilesDir() + "/tombstones" 目录。(通常在: /data/data/PACKAGE_NAME/files/tombstones

在 src/java/xcrash/xcrash_sample 文件夹中,有一个更实际和复杂的示例 app。

构建

如果你想编译 xCrash 的源码。请按以下步骤进行:

1. 下载 Android NDK r16b,设置 PATH 环境变量。

2. 编译和复制 native 库。

cd ./src/native/
./build.sh
./install.sh

3. 编译 AAR 库。

cd ./src/java/xcrash/
./gradlew :xcrash_lib:build

你可能感兴趣的:(Android)