From ad7520357fe1d64a004cf6bc3c0e2e224e08ea8d Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Fri, 11 Aug 2023 00:50:32 +0200 Subject: [PATCH] fix: do not try to get existing AAPT binary if a path to it is provided --- .../src/main/java/brut/androlib/AaptInvoker.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/AaptInvoker.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/AaptInvoker.java index 4bd891d9..ea962da4 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/AaptInvoker.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/AaptInvoker.java @@ -365,7 +365,14 @@ public class AaptInvoker { List cmd = new ArrayList<>(); try { - String aaptCommand = AaptManager.getAaptExecutionCommand(aaptPath, getAaptBinaryFile()); + // Instead of AaptManager.getAaptExecutionCommand(aaptPath, getAaptBinaryFile()); + // it is needed to use the following command, because getAaptBinaryFile() + // may throw BrutException even when not used by AaptManager.getAaptExecutionCommand + File aaptFile; + if (aaptPath.isEmpty() || !(aaptFile = new File(aaptPath)).exists()) + aaptFile = getAaptBinaryFile(); + String aaptCommand = aaptFile.getPath(); + cmd.add(aaptCommand); } catch (BrutException ex) { LOGGER.warning("aapt: " + ex.getMessage() + " (defaulting to $PATH binary)");