-
-
[推荐] 爱奇艺视频 APP 使用的 Android native crash + Java exception 捕获方案在 GitHub 开源了
-
发表于:
2019-4-11 13:28
5613
-
[推荐] 爱奇艺视频 APP 使用的 Android native crash + Java exception 捕获方案在 GitHub 开源了
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 崩溃
使用
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 r16
下载 Android NDK r16,设置 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 许可证。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!