From da34877db879e191cc3fff6541c95befe79ee32f Mon Sep 17 00:00:00 2001 From: Nullptr Date: Sun, 18 Jul 2021 15:25:06 +0800 Subject: [PATCH] Fix native lib not found --- .../lsposed/lspatch/loader/LSPApplication.java | 3 --- .../appstub/LSPAppComponentFactoryStub.java | 15 ++++++++------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/lsposed/lspatch/loader/LSPApplication.java b/app/src/main/java/org/lsposed/lspatch/loader/LSPApplication.java index 9ece125..835dae4 100644 --- a/app/src/main/java/org/lsposed/lspatch/loader/LSPApplication.java +++ b/app/src/main/java/org/lsposed/lspatch/loader/LSPApplication.java @@ -38,9 +38,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.nio.charset.StandardCharsets; -import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; -import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.nio.file.attribute.PosixFilePermissions; import java.util.ArrayList; @@ -49,7 +47,6 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; -import dalvik.system.PathClassLoader; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.XposedHelpers; diff --git a/appstub/src/main/java/org/lsposed/lspatch/appstub/LSPAppComponentFactoryStub.java b/appstub/src/main/java/org/lsposed/lspatch/appstub/LSPAppComponentFactoryStub.java index 97d34dc..e01bfe4 100644 --- a/appstub/src/main/java/org/lsposed/lspatch/appstub/LSPAppComponentFactoryStub.java +++ b/appstub/src/main/java/org/lsposed/lspatch/appstub/LSPAppComponentFactoryStub.java @@ -34,19 +34,18 @@ public class LSPAppComponentFactoryStub extends AppComponentFactory { /** * Instantiate original AppComponentFactory
* This method will be called at instantiateClassLoader by createOrUpdateClassLoaderLocked - * - * @param cl PathClassLoader(originalApk) **/ - private void initOriginalAppComponentFactory(ClassLoader cl, ApplicationInfo aInfo) { + private void initOriginalAppComponentFactory(ApplicationInfo aInfo) { final String cacheApkPath = aInfo.dataDir + "/cache/origin_apk.bin"; - final String originalAppComponentFactoryClass = FileUtils.readTextFromInputStream(cl.getResourceAsStream(ORIGINAL_APP_COMPONENT_FACTORY_ASSET_PATH)); + final String originalAppComponentFactoryClass = + FileUtils.readTextFromInputStream(baseClassLoader.getResourceAsStream(ORIGINAL_APP_COMPONENT_FACTORY_ASSET_PATH)); try { - try (InputStream inputStream = cl.getResourceAsStream(ORIGINAL_APK_ASSET_PATH)) { + try (InputStream inputStream = baseClassLoader.getResourceAsStream(ORIGINAL_APK_ASSET_PATH)) { Files.copy(inputStream, Paths.get(cacheApkPath)); } catch (FileAlreadyExistsException ignored) { } - appClassLoader = new PathClassLoader(cacheApkPath, cl.getParent()); + appClassLoader = new PathClassLoader(cacheApkPath, aInfo.nativeLibraryDir, baseClassLoader.getParent()); if (originalAppComponentFactoryClass == null || originalAppComponentFactoryClass.isEmpty()) originalAppComponentFactory = new AppComponentFactory(); else @@ -60,7 +59,9 @@ public class LSPAppComponentFactoryStub extends AppComponentFactory { @Override public ClassLoader instantiateClassLoader(ClassLoader cl, ApplicationInfo aInfo) { baseClassLoader = cl; - initOriginalAppComponentFactory(cl, aInfo); + initOriginalAppComponentFactory(aInfo); + Log.d(TAG, "baseClassLoader is " + baseClassLoader); + Log.d(TAG, "appClassLoader is " + appClassLoader); return originalAppComponentFactory.instantiateClassLoader(appClassLoader, aInfo); }