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)");