diff --git a/apktool-cli/src/main/java/brut/apktool/Main.java b/apktool-cli/src/main/java/brut/apktool/Main.java index 902d7895..00691306 100644 --- a/apktool-cli/src/main/java/brut/apktool/Main.java +++ b/apktool-cli/src/main/java/brut/apktool/Main.java @@ -95,6 +95,8 @@ public class Main { decoder.setDecodeSources(ApkDecoder.DECODE_SOURCES_NONE); } else if ("-d".equals(opt) || "--debug".equals(opt)) { decoder.setDebugMode(true); + } else if ("-b".equals(opt) || "--no-debug-info".equals(opt)) { + decoder.setBaksmaliDebugMode(false); } else if ("-t".equals(opt) || "--frame-tag".equals(opt)) { i++; if (i >= args.length) { @@ -236,6 +238,8 @@ public class Main { " Do not decode resources.\n" + " -d, --debug\n" + " Decode in debug mode. Check project page for more info.\n" + + " -b, --no-debug-info\n" + + " Baksmali -- don't write out debug info (.local, .param, .line, etc.).\n" + " -f, --force\n" + " Force delete destination directory.\n" + " -t , --frame-tag \n" + diff --git a/apktool-lib/src/main/java/brut/androlib/Androlib.java b/apktool-lib/src/main/java/brut/androlib/Androlib.java index 692d33b8..6e8a1c4e 100644 --- a/apktool-lib/src/main/java/brut/androlib/Androlib.java +++ b/apktool-lib/src/main/java/brut/androlib/Androlib.java @@ -62,14 +62,14 @@ public class Androlib { } } - public void decodeSourcesSmali(File apkFile, File outDir, boolean debug) + public void decodeSourcesSmali(File apkFile, File outDir, boolean debug, boolean bakdeb) throws AndrolibException { try { File smaliDir = new File(outDir, SMALI_DIRNAME); OS.rmdir(smaliDir); smaliDir.mkdirs(); LOGGER.info("Baksmaling..."); - SmaliDecoder.decode(apkFile, smaliDir, debug); + SmaliDecoder.decode(apkFile, smaliDir, debug, bakdeb); } catch (BrutException ex) { throw new AndrolibException(ex); } diff --git a/apktool-lib/src/main/java/brut/androlib/ApkDecoder.java b/apktool-lib/src/main/java/brut/androlib/ApkDecoder.java index 6dee5c05..217ae83c 100644 --- a/apktool-lib/src/main/java/brut/androlib/ApkDecoder.java +++ b/apktool-lib/src/main/java/brut/androlib/ApkDecoder.java @@ -82,7 +82,7 @@ public class ApkDecoder { mAndrolib.decodeSourcesRaw(mApkFile, outDir, mDebug); break; case DECODE_SOURCES_SMALI: - mAndrolib.decodeSourcesSmali(mApkFile, outDir, mDebug); + mAndrolib.decodeSourcesSmali(mApkFile, outDir, mDebug, mBakDeb); break; case DECODE_SOURCES_JAVA: mAndrolib.decodeSourcesJava(mApkFile, outDir, mDebug); @@ -139,6 +139,10 @@ public class ApkDecoder { mDebug = debug; } + public void setBaksmaliDebugMode(boolean bakdeb) { + mBakDeb = bakdeb; + } + public void setForceDelete(boolean forceDelete) { mForceDelete = forceDelete; } @@ -267,4 +271,5 @@ public class ApkDecoder { private boolean mForceDelete = false; private String mFrameTag; private boolean mKeepBrokenResources = false; -} \ No newline at end of file + private boolean mBakDeb = true; +} diff --git a/apktool-lib/src/main/java/brut/androlib/src/SmaliDecoder.java b/apktool-lib/src/main/java/brut/androlib/src/SmaliDecoder.java index e5330e1d..134fb885 100644 --- a/apktool-lib/src/main/java/brut/androlib/src/SmaliDecoder.java +++ b/apktool-lib/src/main/java/brut/androlib/src/SmaliDecoder.java @@ -29,15 +29,16 @@ import org.jf.dexlib.DexFile; */ public class SmaliDecoder { - public static void decode(File apkFile, File outDir, boolean debug) + public static void decode(File apkFile, File outDir, boolean debug, boolean bakdeb) throws AndrolibException { - new SmaliDecoder(apkFile, outDir, debug).decode(); + new SmaliDecoder(apkFile, outDir, debug, bakdeb).decode(); } - private SmaliDecoder(File apkFile, File outDir, boolean debug) { + private SmaliDecoder(File apkFile, File outDir, boolean debug, boolean bakdeb) { mApkFile = apkFile; mOutDir = outDir; mDebug = debug; + mBakDeb = bakdeb; } private void decode() throws AndrolibException { @@ -47,7 +48,7 @@ public class SmaliDecoder { try { baksmali.disassembleDexFile(mApkFile.getAbsolutePath(), new DexFile(mApkFile), false, mOutDir.getAbsolutePath(), null, - null, null, false, true, true, true, false, false, + null, null, false, true, true, mBakDeb, false, false, mDebug ? main.DIFFPRE: 0, false, false, null); } catch (IOException ex) { throw new AndrolibException(ex); @@ -57,4 +58,5 @@ public class SmaliDecoder { private final File mApkFile; private final File mOutDir; private final boolean mDebug; + private final boolean mBakDeb; }