修补后闪退:五大嫌疑点与排查顺序
第一步:先拿崩溃日志
闪退了但不知道为什么——先搞到崩溃日志。三种方式:
方式 A:电脑端 adb
adb logcat -s AndroidRuntime:E
清一下日志(adb logcat -c),然后在手机上打开闪退的应用,再看 adb 输出。找 FATAL EXCEPTION 后面的堆栈。
方式 B:手机上的崩溃日志 App酷安搜「崩溃日志」「Logcat」类的 App,选 Android 11+ 兼容的,直接在手机上看。
方式 C:LSPatch Manager 的注入日志 Manager 设置里打开「输出详细注入日志」,然后强制停止应用再打开——注入日志会写到修补输出目录。
第二步:五大嫌疑点
按排查效率从高到低排序。
嫌疑 1:签名冲突
症状:应用刚启动就秒退,崩溃日志里有 Signature mismatch 或 PackageManager 相关的异常。
原因:修补后的 APK 用了 LSPatch 自签名,但应用自身有签名校验逻辑(常见于微信、支付宝、游戏等)。
解决:
- 修补时开「去签模式」或「先清除再签名」(CLI 用
--clear-sign) - 如果还是不行,这个应用的签名校验是原生级别的——LSPatch 路线无解(没有 Root 绕过不了),换太极·阴试试
嫌疑 2:加固壳拦截
症状:应用启动时显示一个简短的错误提示(比如"应用被修改"、"安全检测失败")然后退出。崩溃日志里有 verify failed、integrity check 字样。
原因:第三方加固方案(腾讯乐固、360、爱加密等)在运行时会校验自己的完整性。LSPatch 改了 dex 或 Manifest,被加固壳检测到。
解决:
- 换 APK 来源——有些渠道分发的是未加固版本(比如官方 Play 版 vs 国内加固版)
- 用 MT 管理器脱壳(需要一定经验),脱完再修补
- opatch/onpatch 的某些版本有尝试绕过部分加固的逻辑,但不是万能的
嫌疑 3:模块版本不兼容
症状:应用能启动一小段时间(1-2 秒)然后突然闪退。崩溃日志里有 NoSuchMethodError、ClassNotFoundException、XposedAPI version mismatch。
原因:模块调用的 Xposed API 和 LSPatch 核心提供的 API 对不上——典型场景是模块是给新版 LSPosed 写的,但你用的 LSPatch 原版核心较旧。
解决:
- 换 opatch/onpatch 分支(核心版本更新)
- 用旧一点的模块版本,或找兼容旧核心的模块
- 便携模式下回所有模块,只打框架先验证框架本身能不能跑
嫌疑 4:LSPatch 运行时加载失败
症状:崩溃日志里有 LSPatch bootstrap not found、NoClassDefFoundError: ...lspatch...、UnsatisfiedLinkError(native so 加载失败)。
原因:
- 修补过程中 dex 或 so 没正确注入(APK zip 结构问题)
- 多 ABI 应用只注了一个 ABI 的 so,应用运行时选了没注的那个
- Android 14 文件权限变更导致某些情况下 so 加载失败
解决:
- 重新修补一遍,修补前清掉之前的产物
- 检查手机 CPU 架构(arm64 vs arm)和 APK 声明的 ABI 是否匹配
- 换 opatch 分支(v0.6 修复了 Android 14 文件权限问题)
嫌疑 5:本地模式下管理器没挂
仅本地模式:刚装完修补版能正常打开,杀了 Manager 进程后就闪退。
原因:本地模式修补的应用运行时依赖 LSPatch Manager 提供的 Binder 服务。Manager 被杀 → Binder 断开 → 应用无法加载模块 → 闪退。
解决:
- Manager 加白名单(MIUI、EMUI、ColorOS 都有"后台保活"设置)
- 近期任务里把 Manager 锁定(长按卡片 → 锁定图标)
- 换便携模式——模块嵌进 APK,完全不依赖 Manager
排查效率技巧
先最小化后逐步增加:
- 先只打框架(不加任何模块),看应用能不能正常启动
- 能启动了,再加第一个模块
- 模块能加载了,再加第二个
- 直到出现闪退 → 最后加的那个就是问题来源
这样能快速定位是框架问题还是模块问题。