diff --git a/jadx-core/src/main/java/jadx/api/JadxDecompiler.java b/jadx-core/src/main/java/jadx/api/JadxDecompiler.java index 03cd422de..f59501765 100644 --- a/jadx-core/src/main/java/jadx/api/JadxDecompiler.java +++ b/jadx-core/src/main/java/jadx/api/JadxDecompiler.java @@ -108,7 +108,25 @@ public final class JadxDecompiler { parse(); } + public void parseAndSaveXML() { + if (this.args.isXMLTest()) { + InputFile inf = inputFiles.get(0); + try { + byte[] buffer = InputFile.loadXMLBuffer(inf.getFile()); + if (buffer != null) { + File out = new File(outDir, "AndroidManifest.xml"); + BinaryXMLParser bxp = new BinaryXMLParser(root); + bxp.parse(buffer, out); + } + } catch (Exception e) { + LOG.info("Decompiling AndroidManifest.xml failed!", e); + } + } + } + public void save() { + parseAndSaveXML(); + try { ExecutorService ex = getSaveExecutor(); ex.shutdown(); @@ -204,20 +222,6 @@ public final class JadxDecompiler { root = new RootNode(); LOG.info("loading ..."); root.load(inputFiles); - - if (this.args.isXMLTest()) { - InputFile inf = inputFiles.get(0); - try { - byte[] buffer = InputFile.loadXMLBuffer(inf.getFile()); - if (buffer != null) { - File out = new File(args.getOutDir(), "AndroidManifest.xml"); - BinaryXMLParser bxp = new BinaryXMLParser(root); - bxp.parse(buffer, out); - } - } catch (Exception e) { - LOG.info("Decompiling AndroidManifest.xml failed!", e); - } - } } void processClass(ClassNode cls) { diff --git a/jadx-gui/src/main/java/jadx/gui/JadxWrapper.java b/jadx-gui/src/main/java/jadx/gui/JadxWrapper.java index 6e73af703..a48d1d5e6 100644 --- a/jadx-gui/src/main/java/jadx/gui/JadxWrapper.java +++ b/jadx-gui/src/main/java/jadx/gui/JadxWrapper.java @@ -42,6 +42,7 @@ public class JadxWrapper { public void run() { try { decompiler.setOutputDir(dir); + decompiler.parseAndSaveXML(); ThreadPoolExecutor ex = (ThreadPoolExecutor) decompiler.getSaveExecutor(); ex.shutdown(); while (ex.isTerminating()) {