From 68bb2d3db7b1bf6d51796ce703c2bbf71563de76 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Wed, 3 Feb 2021 19:34:08 +0800 Subject: [PATCH] Fix duplicate declare when cache fails (#59) --- .../github/lsposed/lspd/yahfa/dexmaker/HookerDexMaker.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/io/github/lsposed/lspd/yahfa/dexmaker/HookerDexMaker.java b/core/src/main/java/io/github/lsposed/lspd/yahfa/dexmaker/HookerDexMaker.java index d7df91c8..2899cbf4 100644 --- a/core/src/main/java/io/github/lsposed/lspd/yahfa/dexmaker/HookerDexMaker.java +++ b/core/src/main/java/io/github/lsposed/lspd/yahfa/dexmaker/HookerDexMaker.java @@ -135,13 +135,13 @@ public class HookerDexMaker { @SuppressWarnings("ResultOfMethodCallIgnored") @TargetApi(Build.VERSION_CODES.O) private void doMake(String hookedClassName) throws Exception { - mDexMaker = new DexMaker(); ClassLoader loader = null; // Generate a Hooker class. String className = CLASS_NAME_PREFIX; boolean usedCache = false; if (canCache) { try { + mDexMaker = new DexMaker(); // className is also used as dex file name // so it should be different from each other String suffix = DexMakerUtils.getSha1Hex(mMember.toString()); @@ -165,8 +165,9 @@ public class HookerDexMaker { if (!usedCache) { // do everything in memory DexLog.d("Generating in memory"); - if(BuildConfig.DEBUG) + if (BuildConfig.DEBUG) className = className + hookedClassName.replace(".", "/"); + mDexMaker = new DexMaker(); doGenerate(className); byte[] dexBytes = mDexMaker.generate(); loader = new InMemoryDexClassLoader(ByteBuffer.wrap(dexBytes), mAppClassLoader);