From fad2f99541d1de33588ee9c40801297eda1d8179 Mon Sep 17 00:00:00 2001 From: IgorEisberg Date: Sun, 4 Jul 2021 14:12:38 +0300 Subject: [PATCH] style: return DexFile interface from SmaliDecoder --- .../src/main/java/brut/androlib/Androlib.java | 14 ++++++++------ .../main/java/brut/androlib/src/SmaliDecoder.java | 10 ++++++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/Androlib.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/Androlib.java index bc8780c6..b646a2f6 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/Androlib.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/Androlib.java @@ -32,6 +32,10 @@ import brut.androlib.src.SmaliDecoder; import brut.common.BrutException; import brut.directory.*; import brut.util.*; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.FilenameUtils; +import org.jf.dexlib2.iface.DexFile; + import java.io.*; import java.util.*; import java.util.logging.Logger; @@ -41,9 +45,6 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.FilenameUtils; - public class Androlib { private final AndrolibResources mAndRes = new AndrolibResources(); protected final ResUnknownFiles mResUnknownFiles = new ResUnknownFiles(); @@ -95,9 +96,10 @@ public class Androlib { OS.rmdir(smaliDir); smaliDir.mkdirs(); LOGGER.info("Baksmaling " + filename + "..."); - apiLevel = SmaliDecoder.decode(apkFile, smaliDir, filename, bakDeb, apiLevel); - if (mMinSdkVersion == 0 || mMinSdkVersion > apiLevel) { - mMinSdkVersion = apiLevel; + DexFile dexFile = SmaliDecoder.decode(apkFile, smaliDir, filename, bakDeb, apiLevel); + int minSdkVersion = dexFile.getOpcodes().api; + if (mMinSdkVersion == 0 || mMinSdkVersion > minSdkVersion) { + mMinSdkVersion = minSdkVersion; } } catch (BrutException ex) { throw new AndrolibException(ex); diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/src/SmaliDecoder.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/src/SmaliDecoder.java index cc9b5fe4..226ae3da 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/src/SmaliDecoder.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/src/SmaliDecoder.java @@ -24,6 +24,7 @@ import org.jf.dexlib2.Opcodes; import org.jf.dexlib2.dexbacked.DexBackedDexFile; import org.jf.dexlib2.dexbacked.DexBackedOdexFile; import org.jf.dexlib2.analysis.InlineMethodResolver; +import org.jf.dexlib2.iface.DexFile; import org.jf.dexlib2.iface.MultiDexContainer; import java.io.File; @@ -31,7 +32,7 @@ import java.io.IOException; public class SmaliDecoder { - public static int decode(File apkFile, File outDir, String dexName, boolean bakDeb, int apiLevel) + public static DexFile decode(File apkFile, File outDir, String dexName, boolean bakDeb, int apiLevel) throws AndrolibException { return new SmaliDecoder(apkFile, outDir, dexName, bakDeb, apiLevel).decode(); } @@ -44,7 +45,7 @@ public class SmaliDecoder { mApiLevel = apiLevel; } - private int decode() throws AndrolibException { + private DexFile decode() throws AndrolibException { try { final BaksmaliOptions options = new BaksmaliOptions(); @@ -67,7 +68,8 @@ public class SmaliDecoder { } // create the container - MultiDexContainer container = DexFileFactory.loadDexContainer(mApkFile, mApiLevel > 0 ? Opcodes.forApi(mApiLevel) : null); + MultiDexContainer container = + DexFileFactory.loadDexContainer(mApkFile, mApiLevel > 0 ? Opcodes.forApi(mApiLevel) : null); MultiDexContainer.DexEntry dexEntry; DexBackedDexFile dexFile; @@ -97,7 +99,7 @@ public class SmaliDecoder { Baksmali.disassembleDexFile(dexFile, mOutDir, jobs, options); - return dexFile.getOpcodes().api; + return dexFile; } catch (IOException ex) { throw new AndrolibException(ex); }