diff --git a/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java b/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java index aa9acc2e6..09e7c5a0e 100644 --- a/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java +++ b/jadx-cli/src/main/java/jadx/cli/JadxCLIArgs.java @@ -47,6 +47,9 @@ public class JadxCLIArgs { @Parameter(names = {"--no-imports"}, description = "disable use of imports, always write entire package name") protected boolean useImports = true; + @Parameter(names = {"--no-debug-info"}, description = "disable debug info") + protected boolean debugInfo = true; + @Parameter(names = "--no-replace-consts", description = "don't replace constant value with matching constant field") protected boolean replaceConsts = true; @@ -160,6 +163,7 @@ public class JadxCLIArgs { args.setRespectBytecodeAccModifiers(respectBytecodeAccessModifiers); args.setExportAsGradleProject(exportAsGradleProject); args.setUseImports(useImports); + args.setDebugInfo(debugInfo); return args; } @@ -203,6 +207,10 @@ public class JadxCLIArgs { return useImports; } + public boolean isDebugInfo() { + return debugInfo; + } + public boolean isDeobfuscationOn() { return deobfuscationOn; } diff --git a/jadx-cli/src/test/java/jadx/cli/JadxCLIArgsTest.java b/jadx-cli/src/test/java/jadx/cli/JadxCLIArgsTest.java index 8ae1e5891..4bd28622b 100644 --- a/jadx-cli/src/test/java/jadx/cli/JadxCLIArgsTest.java +++ b/jadx-cli/src/test/java/jadx/cli/JadxCLIArgsTest.java @@ -33,11 +33,14 @@ public class JadxCLIArgsTest { @Test public void testOptionsOverride() { assertThat(override(new JadxCLIArgs(), "--no-imports").isUseImports(), is(false)); + assertThat(override(new JadxCLIArgs(), "--no-debug-info").isDebugInfo(), is(false)); assertThat(override(new JadxCLIArgs(), "").isUseImports(), is(true)); JadxCLIArgs args = new JadxCLIArgs(); args.useImports = false; assertThat(override(args, "--no-imports").isUseImports(), is(false)); + args.debugInfo = false; + assertThat(override(args, "--no-debug-info").isDebugInfo(), is(false)); args = new JadxCLIArgs(); args.useImports = false; diff --git a/jadx-core/src/main/java/jadx/api/JadxArgs.java b/jadx-core/src/main/java/jadx/api/JadxArgs.java index d9c226ea5..003980905 100644 --- a/jadx-core/src/main/java/jadx/api/JadxArgs.java +++ b/jadx-core/src/main/java/jadx/api/JadxArgs.java @@ -27,6 +27,7 @@ public class JadxArgs { private boolean showInconsistentCode = false; private boolean useImports = true; + private boolean debugInfo = true; private boolean isSkipResources = false; private boolean isSkipSources = false; @@ -133,6 +134,14 @@ public class JadxArgs { this.useImports = useImports; } + public boolean isDebugInfo() { + return debugInfo; + } + + public void setDebugInfo(boolean debugInfo) { + this.debugInfo = debugInfo; + } + public boolean isSkipResources() { return isSkipResources; } diff --git a/jadx-core/src/main/java/jadx/core/Jadx.java b/jadx-core/src/main/java/jadx/core/Jadx.java index f870c9973..abeb17f0e 100644 --- a/jadx-core/src/main/java/jadx/core/Jadx.java +++ b/jadx-core/src/main/java/jadx/core/Jadx.java @@ -67,7 +67,9 @@ public class Jadx { passes.add(new BlockFinish()); passes.add(new SSATransform()); - passes.add(new DebugInfoVisitor()); + if (args.isDebugInfo()) { + passes.add(new DebugInfoVisitor()); + } passes.add(new TypeInference()); if (args.isRawCFGOutput()) {