From efeb7588456c24502613d4abae181c04bba2896c Mon Sep 17 00:00:00 2001 From: NkBe Date: Mon, 8 Dec 2025 22:15:53 +0800 Subject: [PATCH] fix(injectDex): Fixed the crash issue of the injection loader on some Android. https://github.com/JingMatrix/LSPatch/pull/68 --- .../metaloader/LSPAppComponentFactoryStub.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/meta-loader/src/main/java/org/lsposed/npatch/metaloader/LSPAppComponentFactoryStub.java b/meta-loader/src/main/java/org/lsposed/npatch/metaloader/LSPAppComponentFactoryStub.java index 52bd5c4..07eea30 100644 --- a/meta-loader/src/main/java/org/lsposed/npatch/metaloader/LSPAppComponentFactoryStub.java +++ b/meta-loader/src/main/java/org/lsposed/npatch/metaloader/LSPAppComponentFactoryStub.java @@ -101,7 +101,23 @@ public class LSPAppComponentFactoryStub extends AppComponentFactory { transfer(is, os); dex = os.toByteArray(); } - soPath = cl.getResource("assets/npatch/so/" + libName + "/libnpatch.so").getPath().substring(5); + java.net.URL url = cl.getResource("assets/npatch/so/" + libName + "/libnpatch.so"); + if (url == null) { + throw new RuntimeException("Should not happen: libnpatch.so not found in assets"); + } + String rawPath = url.getPath(); + if (rawPath.startsWith("file:")) { + soPath = rawPath.substring(5); + } else if (rawPath.startsWith("jar:file:")) { + soPath = rawPath.substring(9); + } else { + soPath = rawPath; + } + try { + soPath = java.net.URLDecoder.decode(soPath, "UTF-8"); + } catch (java.io.UnsupportedEncodingException e) { + } + Log.i(TAG, "Loading native lib from: " + soPath); } System.load(soPath);