🌐 English · 简体中文
拦截应用崩溃并以系统通知方式捕获展示、记录异常历史、支持按应用配置展示方式的 Android 崩溃跟踪模块(基于 LSPosed)。
基于上游 KitsunePie/AppErrorsTracking,用 libxposed API 102 纯 Java 重构(原版 Kotlin + YukiHookAPI)。
⚠️ 包名变更:自 v1.15 起包名改为io.github.vstory.apperrors(全新应用,与旧包名com.vstory.apperrors不共享数据)。升级用户需在 LSPosed 中重新启用模块并勾选 system_server,旧包名版本可卸载。
- 拦截崩溃:应用崩溃时原生白色错误对话框不再出现(模块接管
AppErrors/ErrorDialogController链路)。 - 系统通知:高优先级通知,标题含应用名 + 崩溃原因。点击通知本身 → 打开异常记录列表;点通知上的「查看信息」按钮 → 直达该次崩溃详情。
- 防刷屏:同一应用反复崩溃只替换同一条通知,不堆积。
- 自动记录模块启用以来的全部崩溃(含 Native 崩溃),列表最新在上。
- 折叠聚合:同款崩溃(同应用 + 同异常 + 同抛出位置,Native 按同源 abort message)自动折叠成一组显示
×N,展开可逐条查看;单条记录不折叠。 - 只看此应用:长按记录 → 菜单「只看此应用」过滤历史;顶部过滤条点击即取消。
- 长按菜单:查看详情 / 应用信息 / 只看此应用 / 删除该条记录。
- 顶部按钮:统计报告 / 清空全部 / 导出全部。
- 应用信息:应用名 / 包名 / 版本 / 用户 ID / CPU ABI / targetSdk / minSdk。
- 异常信息:异常信息 / 异常类型 / 抛出文件 / 抛出类 / 抛出方法 / 行号 / 记录时间。
- 崩溃页面:崩溃发生在哪个页面——前台崩溃显示页面短类名(如
MainActivity),后台崩溃显示「后台」,一眼区分用户正操作时崩还是被系统/后台搞崩。 - 堆栈操作:一键复制 / 导出到文件 / 分享 / 打印到 logcat;可关闭自动换行(改为横向滚动)便于整段选择。
- 信息卡每行点击复制(标签 + 值,或仅值)。
- 卡片式报告:崩溃次数 / 应用总数 / 涉及应用数 / 崩溃率 / 崩溃最多的应用 / 崩溃最多的异常类型。
| 开关/入口 | 作用 |
|---|---|
| 仅显示前台应用异常 | 开启后只有正在使用的前台应用崩溃才提示;后台崩溃仍记录不打扰 |
| 仅显示主进程异常 | 同上,只提示主进程崩溃 |
| 忽略行为 | 选择忽略(静音)某应用后默认静音到「设备重启」或「设备解锁」 |
| 应用配置模板 | 按应用单独设置崩溃展示方式(见下) |
| 被忽略应用 | 查看并恢复已静音的应用 |
| 快速设置磁贴 | 系统快捷开关,点击直达异常记录 |
| 隐藏桌面图标 | 隐藏后在 LSPosed 内仍可进入模块 |
为每个应用单独选择崩溃时如何展示:跟随全局 / 系统通知 / Toast / 静默。静默的应用崩溃仍会记录,但不打扰。
同一应用短时间反复崩溃(崩溃风暴)时自动强制停止该应用并暂停其通知,防止高频崩溃拖垮系统(系统反复崩溃可致死机);期间发一条说明通知,可一键恢复。此保护不受显示过滤/忽略影响,始终生效。
- 界面语言切换:界面跟随系统语言;系统为中文时,连点主界面顶部标题 5 次在中文 / 英文间切换(崩溃通知文案也跟随)。
- 调试:内置调试日志界面;「调试设置」开关控制详细程度(开启后崩溃时输出堆栈详情等
[DEBUG]日志,可打印到 logcat / 导出)。
- 作用域:模块只在 system_server 进程运行;首次启用需在 LSPosed 勾选
system_server并重启系统(或重启system_server)。后续升级可用 LSPosed「热重载」即时生效。