模块兼容性:哪些能用哪些不行
先说结论
能用的:作用域是某个具体应用的、不依赖系统级 Provider/组件的、未加反内置检测的模块。
不能用的:作用域是系统框架的、依赖 LSPosed 系统级 Provider 的、被开发者加了反内置检测的模块。
三类模块
第一类:完美兼容 LSPatch
标准:
- 作用域只针对一个或几个具体应用(微博、TikTok、网易云等)
- 仅使用 LSPosed 提供的 Xposed API(
XposedHelpers、XposedBridge等) - 不依赖系统级
XSharedPreferencesProvider
这类模块在 LSPatch 下本地模式和便携模式都能用,无需特殊处理。示例:
- 微博猪手、TikTok 下载增强、网易云黑胶解锁、DataManager
- 任何应用商店里标注了 "LSPatch compatible" 或 "Non-Root" 的模块
第二类:本地模式能用,便携模式不行
两种情况:
情况 A:模块代码里检测内置模式后拒绝运行
部分模块开发者因为版权、防倒卖等原因在模块里加了逻辑:检测到自己被嵌入宿主 APK(而不是通过 LSPosed 动态加载)时直接不初始化。这种模块便携模式下无效,但本地模式下因为是 Manager 动态加载的,检测逻辑触发不了,通常能用。
情况 B:模块依赖 LSPosed Provider
某些模块用了 XSharedPreferences 的 Provider 模式——模块从 LSPosed 系统组件里读配置。LSPatch 补丁式框架里没有这个 Provider,所以直接读写会失败。
但很多这类模块同时支持文件存储模式(把配置写到模块自己的 SharedPreferences 或文件里),LSPatch 下通常会自动走降级路径。如果模块不支持降级,那无论本地还是便携模式都用不了。
第三类:LSPatch 彻底用不了
作用域是系统框架的模块:
- 修改状态栏、通知栏(SystemUI 模块)
- 修改系统设置应用
- 修改权限管理、锁屏行为
- 修改系统动画、转场效果
这些系统组件没法通过 APK 修补来注入 LSPatch 运行时。想玩这类模块必须回到 LSPosed + Zygisk/Riru 路线(需要 Root)。
依赖 Zygote 注入时机的模块:
- Hook 应用启动早期(
<clinit>方法、类加载器初始化之前) - LSPatch 的注入时机是 AppComponentFactory,比 Zygote 晚一整个阶段
这类模块在 LSPatch 下可能 hook 不到目标方法。
怎么判断一个模块能不能用
三步:
1. 看模块描述或仓库 README
正规模块会明确标注兼容性:
- "LSPosed only" → 不能用
- "LSPatch / Non-Root compatible" → 可以用
- "LSPosed & Xposed compatible" → 大概率可以试试
2. 搜社区反馈
酷安、GitHub Issues 搜模块名 + "LSPatch" 或 "免 Root",看有没有人成功过或报过不兼容。
3. 实际试
最坏情况就是修补完发现模块不生效,卸载重装即可。风险可控。
模块与 LSPatch 版本匹配
LSPatch 原版停更于 2023 年底,opatch/onpatch 持续更新。模块的核心 API(de.robv.android.xposed.*)基本稳定,但某些新版本 API(比如 Hook 高级特性)可能依赖新版 LSPosed 核心。
如果模块需要 "LSPosed core ≥ v1.9.x" 之类的条件:
- LSPatch 原版核心是 v1.9.2,够了
- opatch/onpatch 可能已经用了更新的核心,更够
如果模块需要 "API 101" 或更高版本:LSPatch 原版 v0.6 已经支持,没问题。
本地模式 vs 便携模式的模块差异小结
| 情况 | 本地模式 | 便携模式 |
|---|---|---|
| 普通应用级模块 | ✅ 能用 | ✅ 能用 |
| 被检测的反内置模块 | ✅ 通常能用(动态加载绕过检测) | ❌ 大概率不行 |
| 依赖 LSPosed Provider 的模块 | ⚠️ 可能自动降级 | ❌ 大概率不行 |
| 作用域系统级的模块 | ❌ 不行 | ❌ 不行 |