V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
caikelun
V2EX  ›  Android

爱奇艺视频 APP 使用的 Android native crash + Java exception 捕获方案在 GitHub 开源了

  •  1
     
  •   caikelun · 2019-04-11 11:33:09 +08:00 · 9280 次点击
    这是一个创建于 2056 天前的主题,其中的信息可能已经有所发展或是发生改变。

    GitHub 地址: https://github.com/iqiyi/xCrash

    欢迎 star,issue,PR ~~~


    xCrash

    xCrash 是一个安卓 APP 的崩溃捕获库。它支持捕获 native 崩溃和 Java 异常。

    xCrash 能在 App 进程崩溃时,在你指定的目录中生成一个 tombstone 文件(格式与安卓系统的 tombstone 文件类似)。并且,不需要 root 权限或任何系统权限。

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

    特征

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

    捕获 native 崩溃

    catching native crash

    使用

    1. 增加依赖。

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

    2. 指定你需要的 ABI(s)。

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

    3. 增加 ProGuard 规则。

    -keep class xcrash.NativeCrashHandler {
        native <methods>;
        void callback(...);
    }
    

    4. 在 Application#attachBaseContext() 中初始化 xCrash。

    public class MyCustomApplication extends Application {
    
        @Override
        protected void attachBaseContext(Context base) {
            super.attachBaseContext(base);
            
            xcrash.XCrash.init(this);
        }
    }
    

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

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

    构建

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

    2. 编译和安装 native 库。

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

    3. 编译 AAR 库。

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

    贡献

    请阅读 xCrash Contributing Guide

    许可证

    xCrash 使用 MIT 许可证

    xCrash 的文档使用 Creative Commons 许可证

    2 条回复    2019-04-11 13:46:16 +08:00
    waruqi
        1
    waruqi  
       2019-04-11 13:38:22 +08:00   ❤️ 1
    赞!
    jesonyang
        2
    jesonyang  
       2019-04-11 13:46:16 +08:00
    bibib
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3130 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 14:17 · PVG 22:17 · LAX 06:17 · JFK 09:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.