LSPatch is the rootless companion to Vector, the Xposed framework this project is built on. Where Vector hooks the whole system as a Zygisk module and needs Magisk or KernelSU, LSPatch needs neither: it rewrites a single target app's APK to embed the loader and framework runtime, so that one app loads your Xposed modules on its own.
The two share a codebase — the same LSPlant-based hook engine and the same manager UI — and run the same modules. Read Vector's documentation for anything about the framework itself; this README only covers what is specific to the rootless path.
Note
LSPatch changes one app at a time and leaves the rest of the system untouched. It cannot hook system processes or apps you have not patched — that is what the rootful Vector is for.
Both generations of Xposed module run through the same engine, so the module repository and the API references listed under Vector's Developer Resources apply unchanged:
- Modern — libxposed modules receive a real
IXposedService. - Legacy — classic
de.robv.android.xposedmodules keep working as-is.
- Android 9 (API 28) or newer. The upper bound follows Vector — see its compatibility notes.
- Shizuku (optional). With it, the manager installs patched apps silently; without it, grant "install unknown apps" once and install by hand.
| Channel | Source |
|---|---|
| Stable Releases | GitHub Releases |
| Canary (CI) Builds | GitHub Actions |
Each release ships the manager (manager.apk) and the command-line patcher (lspatch.jar), plus a
-debug build of each. When reporting a bug, please reproduce it on the debug build first.
Caution
GitHub requires you to be logged in to download CI artifacts. The link above is filtered to the
master branch; builds from pull requests are unverified.
Manager app — install manager.apk, pick a target, patch it, and install the result. From there
you manage each patched app's modules in place, install modules from the store, and read a live
framework log. Two modes:
- Manager mode keeps the patched app bound to the manager, so module changes apply without re-patching.
- Integrated mode bakes the modules into the APK, producing a self-contained app that needs no manager afterwards.
Command line — download lspatch.jar and run java -jar lspatch.jar to patch an APK from a shell.
- Translations are managed on Crowdin.
- Questions go to Discussions; bug reports to Issues.
- Code style is enforced by Spotless — run
./gradlew spotlessApplybefore submitting. It formats only the files you changed (ktfmt for Kotlin, palantir-java-format for Java), so you never reflow untouched code.