Skip to content

Latest commit

 

History

History
167 lines (110 loc) · 4.81 KB

README.zh-CN.md

File metadata and controls

167 lines (110 loc) · 4.81 KB

xCrash

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

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

intro

xCrash 已经在 爱奇艺 的不同平台(手机,平板,电视)的很多安卓 app(包括爱奇艺视频)中被使用了很多年。

README English Version

特征

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

Tombstone 文件预览

概览图

架构

architecture

捕获 native 崩溃

capture native crash

捕获 ANR

capture anr

使用

1. 增加依赖。

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

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 环境变量。

sdk.dir=your/path/to/sdk
ndk.dir=your/path/to/ndk

3. 编译 AAR 库。

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

如果你需要用 libxcrash.so 和 libxcrash_dumper.so 来构建自己的可执行文件, 请尝试使用 src/native/build_via_cmake.sh

# Windows: run the following cmds in cmd window.
setx /m ANDROID_SDK_ROOT "/path/to/sdk"
setx /m ANDROID_NDK_ROOT "/path/to/ndk"

# macOS & Linux: add the following two lines to ~/.bash_profile, and then source ~/.bash_profile or reopen the terminal
export ANDROID_SDK_ROOT="/path/to/sdk"
export ANDROID_NDK_ROOT="/path/to/ndk"
# 1. 修改 build_via_cmake.sh 中的 XCRASH_OUTPUT_DIRECTORY 为你想要的输出路径
# 2. 在任何路径调用 build_via_cmake.sh

技术支持

  1. 查看 xcrash-sample
  2. GitHub issues 交流。
  3. 邮件: [email protected]
  4. QQ 群: 603635869。二维码:

qq group

贡献

请阅读 xCrash Contributing Guide

许可证

xCrash 使用 MIT 许可证

xCrash 的文档使用 Creative Commons 许可证