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 f5051605..8b075a0b 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 @@ -62,6 +62,10 @@ public class ResFileDecoder { decode(inDir, inFileName, outDir, outFileName, "raw"); return; } + if (typeName.equals("font") && !".xml".equals(ext)) { + decode(inDir, inFileName, outDir, outFileName, "raw"); + return; + } if (typeName.equals("drawable") || typeName.equals("mipmap")) { if (inFileName.toLowerCase().endsWith(".9" + ext)) { outFileName = outResName + ".9" + ext; diff --git a/brut.apktool/apktool-lib/src/test/java/brut/androlib/BuildAndDecodeTest.java b/brut.apktool/apktool-lib/src/test/java/brut/androlib/BuildAndDecodeTest.java index 3853bc75..53847fc8 100644 --- a/brut.apktool/apktool-lib/src/test/java/brut/androlib/BuildAndDecodeTest.java +++ b/brut.apktool/apktool-lib/src/test/java/brut/androlib/BuildAndDecodeTest.java @@ -308,7 +308,12 @@ public class BuildAndDecodeTest { File fontXml = new File((sTestNewDir + "/res/font"), "lobster.xml"); File fontFile = new File((sTestNewDir + "/res/font"), "lobster_regular.otf"); + // Per #1662, ensure font file is not encoded. assertTrue(fontXml.isFile()); + compareXmlFiles("/res/font/lobster.xml"); + + // If we properly skipped decoding the font (otf) file, this file should not exist + assertFalse((new File((sTestNewDir + "/res/values"), "fonts.xml")).isFile()); assertTrue(fontFile.isFile()); }