From 3e6fc8c5ef25cf1421732abd3d03cd529a476df3 Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Wed, 22 Oct 2014 21:56:54 -0500 Subject: [PATCH] QMG are not 9patches - skip these by copying raw --- .../androlib/res/decoder/ResFileDecoder.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ResFileDecoder.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ResFileDecoder.java index d2c84c96..9be175f7 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ResFileDecoder.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ResFileDecoder.java @@ -21,6 +21,7 @@ import brut.androlib.err.CantFind9PatchChunk; import brut.androlib.res.data.ResResource; import brut.androlib.res.data.value.ResBoolValue; import brut.androlib.res.data.value.ResFileValue; +import brut.directory.DirUtil; import brut.directory.Directory; import brut.directory.DirectoryException; import java.io.*; @@ -61,7 +62,7 @@ public class ResFileDecoder { return; } if (typeName.equals("drawable") || typeName.equals("mipmap")) { - if (inFileName.toLowerCase().endsWith(".9." + ext)) { + if (inFileName.toLowerCase().endsWith(".9" + ext)) { outFileName = outResName + ".9" + ext; // check for htc .r.9.png @@ -69,6 +70,12 @@ public class ResFileDecoder { outFileName = outResName + ".r.9" + ext; } + // check for samsung qmg + if (inFileName.toLowerCase().endsWith(".qmg")) { + copyRaw(inDir, outDir, outFileName); + return; + } + try { decode(inDir, inFileName, outDir, outFileName, "9patch"); return; @@ -121,6 +128,14 @@ public class ResFileDecoder { } } + public void copyRaw(Directory inDir, Directory outDir, String filename) throws AndrolibException { + try { + DirUtil.copyToDir(inDir, outDir, filename); + } catch (DirectoryException ex) { + throw new AndrolibException(ex); + } + } + public void decodeManifest(Directory inDir, String inFileName, Directory outDir, String outFileName) throws AndrolibException { InputStream in = null;