From 88e58696429c6facf2f1b01fe6fe23a090a1eec2 Mon Sep 17 00:00:00 2001 From: vvb2060 Date: Fri, 6 Aug 2021 14:37:16 +0800 Subject: [PATCH] [skip ci] Add note (#847) * [skip ci] Add note * add proper way --- .../org/lsposed/lspd/util/LspModuleClassLoader.java | 12 ++---------- .../main/java/hidden/ByteBufferDexClassLoader.java | 11 +++++++++-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/org/lsposed/lspd/util/LspModuleClassLoader.java b/core/src/main/java/org/lsposed/lspd/util/LspModuleClassLoader.java index 2e7af4d2..c1550dc7 100644 --- a/core/src/main/java/org/lsposed/lspd/util/LspModuleClassLoader.java +++ b/core/src/main/java/org/lsposed/lspd/util/LspModuleClassLoader.java @@ -47,11 +47,7 @@ public final class LspModuleClassLoader extends ByteBufferDexClassLoader { String apk) { super(dexBuffers, parent); this.apk = apk; - try { - fixDexName(apk); - } catch (Throwable e) { - Utils.logE("fix name", e); - } + setDexName(apk); } @RequiresApi(Build.VERSION_CODES.Q) @@ -62,11 +58,7 @@ public final class LspModuleClassLoader extends ByteBufferDexClassLoader { super(dexBuffers, librarySearchPath, parent); initNativeLibraryDirs(librarySearchPath); this.apk = apk; - try { - fixDexName(apk); - } catch (Throwable e) { - Utils.logE("fix name", e); - } + setDexName(apk); } private void initNativeLibraryDirs(String librarySearchPath) { diff --git a/hiddenapi-bridge/src/main/java/hidden/ByteBufferDexClassLoader.java b/hiddenapi-bridge/src/main/java/hidden/ByteBufferDexClassLoader.java index ea7239a8..38428baa 100644 --- a/hiddenapi-bridge/src/main/java/hidden/ByteBufferDexClassLoader.java +++ b/hiddenapi-bridge/src/main/java/hidden/ByteBufferDexClassLoader.java @@ -35,8 +35,15 @@ public class ByteBufferDexClassLoader extends BaseDexClassLoader { super(dexFiles, librarySearchPath, parent); } - public void fixDexName(String name) throws IllegalAccessException { - nameField.set(dexFileField.get(((Object[]) dexElementsField.get(pathListField.get(this)))[0]), name); + // Some modules get their module paths from this variable + // They should use `initZygote.modulePath` instead + // Temporarily workaround + // TODO(vvb2060): removed in the next major release + public void setDexName(String name){ + try { + nameField.set(dexFileField.get(((Object[]) dexElementsField.get(pathListField.get(this)))[0]), name); + } catch (Throwable ignored) { + } } public String getLdLibraryPath() {