Skip to content

Commit

Permalink
[AAB] Feature: Support AAB And extractNativeLibs=false
Browse files Browse the repository at this point in the history
项目未配置 `useLegacyPackaging=true` 时,
使用AAB安装, 或最低版本为Android M以上的APK
Native库不会从APK中解压, 参考:
https://developer.android.com/guide/topics/manifest/application-element#extractNativeLibs
google/bundletool#39

此时xCrash通过 `ctx.getApplicationInfo().nativeLibraryDir` 获取的目录内容是空的
因此会出现加载xcrash_dumper失败

而通过 PathClassloader.findLibrary(libName) 获取的路径是虚拟路径, 不是真实存在的
因此直接执行也会失败

此时我们参考 Crashpad 的逻辑, 使用linker加载
参考:
https://github.com/chromium/crashpad/blob/main/client/crashpad_client_linux.cc#L114

为了避免大的改动, 默认仅在加载虚拟路径时使用linker, 实际上在所有场景都可以直接通过linker加载

支持外部自定义配置
```
.setNativeLibPath()
.setLoadNativeWithLinker()
```

如果外部没有配置,内部会自动查找
参考: AbiPathProvider.java 逻辑
  • Loading branch information
shiqos committed Sep 8, 2024
1 parent fb45974 commit eef2a16
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions develop.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Develop

## 背景
目前 xCrash 很久没更新, 其中存在一些兼容性问题:
1. 对 AAB 或 android:extractNativeLibs=false flag的支持
2. Android 15 anr 捕获
3. Android 15 page 16K
等等

在官方暂无更新的基础上,我们在自己仓库继续开发 xCrash,希望能够帮助到更多的开发者。

## 目标
修复 xCrash 中的一些问题

## 计划
| 功能 | 是否支持 | 支持版本 |
|---------------------|------|-------|
| AAB支持 || 3.1.1 |
| Android 15 anr || - |
| Android 15 page 16K || - |

## 使用
```
implementation("io.github.shiqos:xcrash-android-lib:<version>")
```

初始化参考: [README.md](https://github.com/iqiyi/xCrash/blob/master/README.md)

0 comments on commit eef2a16

Please sign in to comment.