修补失败:加固、解析错误、Manifest 异常怎么办
流程里的"修补失败"指什么
你点「开始注入」后,进度条走完或走到一半,Manager/CLI 直接弹窗或返回错误,没有产出修补好的 APK 文件。这种情况和"修补成功但安装后闪退"(见另篇)是两回事。
最常见的报错类型
报错一:Manifest 解析失败
典型报错:Manifest file parse failure、Unable to read AndroidManifest.xml
原因:LSPatch 用 Apkzlib(Google 开源的 APK 操作库)解析 Manifest。某些加固方案会把 Manifest 加密、混淆或用自定义编码——Apkzlib 直接看不懂。
解决:
- 换 APK 来源:从已装应用选 vs 从 APK 文件选,两条路都试试(有时加固只在商店版里有)
- 用 MT 管理器先解包加固的 APK,拿到原始的 dex 和 Manifest,再重新打包成未加固 APK
- 试试 opatch 分支——它的 Manifest 解析逻辑比原版更宽松
- 实在不行,这个应用放弃 LSPatch 路线
报错二:APK 已损坏或打不开
典型报错:Invalid APK file、ZipError、Cannot open archive
原因:
- 下载的 APK 文件本身不完整(网络中断、CDN 丢包)
- APK 文件被二次打包后文件结构不标准
- split APK 没传全,只传了 base.apk
解决:
- 换一个下载源,重新下载 APK
- split APK 应用:确保 base.apk + 所有 split APK 都在,部分 Manager 会自动合并,部分需要手动先合并
- 先在电脑上用解压软件能正常打开 APK(apk 本质是 zip),如果解压都不行就是文件损坏
报错三:重复修补
典型报错:AppComponentFactory already replaced、Patch already applied
原因:你选的目标应用已经被 LSPatch 修补过——Manifest 里已经有了 LSPatch 的 factory,再补一次就冲突了。
解决:
- 如果是从已装应用列表选的,先卸载修补版 → 去官方渠道重新下原版 → 再修补
- 如果是从 APK 文件选的,换一个原版 APK,别选修补过的那个
报错四:输出目录权限问题
典型报错:Cannot write to output directory、Permission denied
原因:Android 11+ 对存储访问限制更严格。如果选的输出目录在 Android/data/ 或其他受限路径,LSPatch 可能写不进去。
解决:
- 选内部存储根目录下的自建文件夹(比如
LSPatchOutput) - 确认 Manager 已授予「所有文件访问权限」(系统设置 → 应用 → Manager → 权限)
通用调试技巧
开启详细日志:Manager 设置里打开「输出日志到目录」,CLI 加 -v 参数。修补失败后去日志文件里搜 Error 或 Exception,关键词比 Manager 弹窗的一句话有用得多。
换个 LSPatch 分支试试:原版停更了,opatch/onpatch 每天都在修 bug。某个应用在原版上补不了,在 opatch 上可能就行。
降低修补复杂度:便携模式先去掉所有模块,只打框架试试。如果能成功,说明模块嵌入环节有问题,逐个加模块排查。