diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResConfigFlags.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResConfigFlags.java index cbbe5c79..5e44283a 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResConfigFlags.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResConfigFlags.java @@ -416,7 +416,7 @@ public class ResConfigFlags { public final static int DENSITY_HIGH = 240; public final static int DENSITY_XHIGH = 320; public final static int DENSITY_XXHIGH = 480; - public final static int DENSITY_NONE = -1; + public final static int DENSITY_NONE = 0xFFFF; public final static short MASK_LAYOUTDIR = 0xc0; public final static short SCREENLAYOUT_LAYOUTDIR_ANY = 0x00; 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 756c28fb..3b03b06d 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 @@ -19,6 +19,8 @@ import brut.androlib.res.util.ExtFile; import brut.common.BrutException; import brut.util.OS; import java.io.*; +import java.nio.file.*; +import java.nio.file.attribute.BasicFileAttributes; import java.util.HashMap; import java.util.logging.Logger; import org.custommonkey.xmlunit.*; @@ -130,6 +132,41 @@ public class BuildAndDecodeTest { + "-navhidden-dpad/strings.xml"); } + @Test + public void drawableNoDpiTest() throws BrutException, IOException { + compareDrawablesFolder("drawable-nodpi"); + } + + @Test + public void drawableNumberedDpiTest() throws BrutException, IOException { + compareDrawablesFolder("drawable-534dpi"); + } + + @Test + public void drawableLdpiTest() throws BrutException, IOException { + compareDrawablesFolder("drawable-ldpi"); + } + + @Test + public void drawableMdpiTest() throws BrutException, IOException { + compareDrawablesFolder("drawable-mdpi"); + } + + @Test + public void drawableTvdpiTest() throws BrutException, IOException { + compareDrawablesFolder("drawable-tvdpi"); + } + + @Test + public void drawableXhdpiTest() throws BrutException, IOException { + compareDrawablesFolder("drawable-xhdpi"); + } + + @Test + public void drawableXxhdpiTest() throws BrutException, IOException { + compareDrawablesFolder("drawable-xxhdpi"); + } + private static boolean isAaptPresent() throws Exception { boolean result = true; try { @@ -145,6 +182,40 @@ public class BuildAndDecodeTest { return result; } + private void compareDrawable(String path) throws BrutException, IOException { + String tmp = File.separatorChar + "res" + File.separatorChar; + + Files.walkFileTree(Paths.get(sTestOrigDir.toPath() + tmp + path), new SimpleFileVisitor() { + + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + + // hacky fix - load test by changing name of control + File control = file.toFile(); + File test = new File(file.toString().replace("testapp-orig", "testapp-new")); + + if (test.isFile()) { + if (control.hashCode() != test.hashCode()) { + sResult = false; + return FileVisitResult.TERMINATE; + } + } else { + sResult = false; + return FileVisitResult.TERMINATE; + } + return FileVisitResult.CONTINUE; + } + + }); + } + + private boolean compareDrawablesFolder(String path) throws BrutException, IOException { + sResult = true; + compareDrawable(path); + return sResult; + + } + private void compareValuesFiles(String path) throws BrutException { compareXmlFiles("res/" + path, new ElementNameAndAttributeQualifier( "name")); @@ -192,6 +263,8 @@ public class BuildAndDecodeTest { private static ExtFile sTestOrigDir; private static ExtFile sTestNewDir; + private static boolean sResult; + private final static Logger LOGGER = Logger .getLogger(BuildAndDecodeTest.class.getName()); } diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-534dpi/ic_launcher.png b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-534dpi/ic_launcher.png new file mode 100644 index 00000000..96a442e5 Binary files /dev/null and b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-534dpi/ic_launcher.png differ diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-hdpi/ic_launcher.png b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 00000000..96a442e5 Binary files /dev/null and b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-hdpi/ic_launcher.png differ diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-ldpi/ic_launcher.png b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-ldpi/ic_launcher.png new file mode 100644 index 00000000..99238729 Binary files /dev/null and b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-ldpi/ic_launcher.png differ diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-mdpi/ic_launcher.png b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 00000000..359047df Binary files /dev/null and b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-mdpi/ic_launcher.png differ diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-nodpi/ic_launcher.png b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-nodpi/ic_launcher.png new file mode 100644 index 00000000..359047df Binary files /dev/null and b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-nodpi/ic_launcher.png differ diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-tvdpi/ic_launcher.png b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-tvdpi/ic_launcher.png new file mode 100644 index 00000000..359047df Binary files /dev/null and b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-tvdpi/ic_launcher.png differ diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-xhdpi/9patch.9.png b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-xhdpi/9patch.9.png new file mode 100644 index 00000000..286ab358 Binary files /dev/null and b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-xhdpi/9patch.9.png differ diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-xhdpi/9patch_htc.r.9.png b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-xhdpi/9patch_htc.r.9.png new file mode 100644 index 00000000..286ab358 Binary files /dev/null and b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-xhdpi/9patch_htc.r.9.png differ diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-xhdpi/ic_launcher.png b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 00000000..71c6d760 Binary files /dev/null and b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-xhdpi/ic_launcher.png differ diff --git a/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-xxhdpi/ic_launcher.png b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..359047df Binary files /dev/null and b/brut.apktool/apktool-lib/src/test/resources/brut/apktool/testapp/res/drawable-xxhdpi/ic_launcher.png differ