We have seen apps to be crashing due to multiple System.load calls. As seen from the log lines: ``` 06-01 16:43:41.615 I/LSPosed-Bridge(16031): Caused by: java.lang.UnsatisfiedLinkError: Shared library "/data/app/com.example.sample-some_random_string/base.apk!/assets/lspatch/so/arm64-v8a/liblspatch.so" already opened by ClassLoader 0x1c7(dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.sample-some_random_string/base.apk"],nativeLibraryDirectories=[/data/app/com.example.sample-some_random_string/lib/arm64, /data/app/com.example.sample-some_random_string/base.apk!/lib/arm64-v8a, /system/lib64, /product/lib64]]]); can't open in ClassLoader 0x7ffc869ecc(dalvik.system.PathClassLoader[DexPathList[[zip file "/data/user/0/org.houstonmethodist.methodistmobile.debug/cache/lspatch/origin/4198609975.apk", zip file "/data/app/com.example.sample-some_random_string/base.apk"],nativeLibraryDirectories=[/data/app/com.example.sample-some_random_string/lib/arm64, /data/user/0/org.houstonmethodist.methodistmobile.debug/cache/lspatch/origin/4198609975.apk!/lib/arm64-v8a, /system/lib64, /product/lib64]]]) ``` Looks like we are trying to load liblspatch.so file even when it was loaded earlier by the ClassLoader, due to which it is causing the error. This is similar to this issue: https://stackoverflow.com/questions/54155086/preventing-duplicate-system-loadlibrary-calls-when-dynamically-loading-reloading Have added try ... catch block around `System.load` method to handle exceptions / error raised from it, and have added log line to debug the issue in cases of actual errors. |
||
|---|---|---|
| .github | ||
| apkzlib | ||
| core@5666dca1e3 | ||
| gradle/wrapper | ||
| jar | ||
| manager | ||
| meta-loader | ||
| patch | ||
| patch-loader | ||
| share | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| LICENSE | ||
| README.md | ||
| build.gradle.kts | ||
| crowdin.yml | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| settings.gradle.kts | ||
README.md
LSPatch Framework
Introduction
Rootless implementation of LSPosed framework, integrating Xposed API by inserting dex and so into the target APK.
Supported Versions
- Min: Android 9
- Max: In theory, same with LSPosed
Download
For stable releases, please go to Github Releases page
For canary build, please check Github Actions
Note: debug builds are only available in Github Actions
Usage
- Through jar
- Download
lspatch.jar - Run
java -jar lspatch.jar
- Through manager
- Download and install
manager.apkon an Android device - Follow the instructions of the manager app
Translation Contributing
You can contribute translation here.
Credits
License
LSPatch is licensed under the GNU General Public License v3 (GPL-3) (http://www.gnu.org/copyleft/gpl.html).