From 07afbdb52b84e115a4e20f3d59e7f9c1a7e3c7bd Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Thu, 5 Apr 2018 16:24:58 -0400 Subject: [PATCH] fix: normalize path to fix building .apk on Windows - fixes #1741 --- brut.j.dir/src/main/java/brut/directory/ZipUtils.java | 3 ++- brut.j.util/src/main/java/brut/util/BrutIO.java | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/brut.j.dir/src/main/java/brut/directory/ZipUtils.java b/brut.j.dir/src/main/java/brut/directory/ZipUtils.java index 7898b19d..f1a180d5 100644 --- a/brut.j.dir/src/main/java/brut/directory/ZipUtils.java +++ b/brut.j.dir/src/main/java/brut/directory/ZipUtils.java @@ -54,7 +54,8 @@ public class ZipUtils { throws BrutException, IOException { for (final File file : folder.listFiles()) { if (file.isFile()) { - final ZipEntry zipEntry = new ZipEntry(BrutIO.sanitizeUnknownFile(folder, file.getPath().substring(prefixLength))); + final String normalizedPath = BrutIO.normalizePath(file.getPath().substring(prefixLength)); + final ZipEntry zipEntry = new ZipEntry(BrutIO.sanitizeUnknownFile(folder, normalizedPath)); // aapt binary by default takes in parameters via -0 arsc to list extensions that shouldn't be // compressed. We will replicate that behavior diff --git a/brut.j.util/src/main/java/brut/util/BrutIO.java b/brut.j.util/src/main/java/brut/util/BrutIO.java index e58c7964..20d5b09f 100644 --- a/brut.j.util/src/main/java/brut/util/BrutIO.java +++ b/brut.j.util/src/main/java/brut/util/BrutIO.java @@ -97,6 +97,16 @@ public class BrutIO { return canonicalEntryPath.substring(canonicalDirPath.length()); } + public static String normalizePath(String path) { + char separator = File.separatorChar; + + if (separator != '/') { + return path.replace(separator, '/'); + } + + return path; + } + public static void copy(File inputFile, ZipOutputStream outputFile) throws IOException { try ( FileInputStream fis = new FileInputStream(inputFile)