From f85dc478b2c1cc4038be509eab0fbf85432b0d40 Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Mon, 10 Feb 2014 07:17:56 -0600 Subject: [PATCH] Github pr #81 - correctly handle non-URI characters in filename --- CHANGES | 1 + .../apktool-lib/src/main/java/brut/androlib/Androlib.java | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index efea3077..df4d5898 100644 --- a/CHANGES +++ b/CHANGES @@ -34,6 +34,7 @@ v2.0.0 (TBA) -Fixed (issue #238) - Fixed truncated UTF-16 strings -Fixed (issue #584) - Fixed horrible spacing, aligned for 4 spaces. -Fixed (issue #196) - Fixed style crash due to malformed styles. +-Fixed issue with non-URI standard characters in apk name (Thanks rover12421) -Added output to list Apktool version to help debugging. -Updated known bytes for configurations to 38 (from addition of layout direction) -Fixed NPE when handling odex apks even with --no-src specified. (Thanks Rodrigo Chiossi) diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/Androlib.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/Androlib.java index a429154f..3f2cba2c 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/Androlib.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/Androlib.java @@ -217,9 +217,10 @@ public class Androlib { // options.setIndent(4); Yaml yaml = new Yaml(options); - FileWriter writer = null; + Writer writer = null; try { - writer = new FileWriter(new File(mOutDir, "apktool.yml")); + writer = new BufferedWriter(new OutputStreamWriter( + new FileOutputStream(new File(mOutDir, "apktool.yml")), "UTF-8")); yaml.dump(meta, writer); } catch (IOException ex) { throw new AndrolibException(ex); @@ -556,7 +557,7 @@ public class Androlib { // create filesystem Path path = Paths.get(outFile.getAbsolutePath()); - URI apkFileSystem = new URI("jar", path.toUri().toString(), null); + URI apkFileSystem = new URI("jar", outFile.toURI().toString(), null); // loop through files inside for (Map.Entry entry : files.entrySet()) {