diff --git a/.gitignore b/.gitignore index fe7ff60a..07176cc0 100644 --- a/.gitignore +++ b/.gitignore @@ -20,7 +20,7 @@ bin/ # IntelliJ *.iml .idea/* -/out +**/out/ # Patches *.patch \ No newline at end of file diff --git a/brut.apktool/apktool-lib/src/test/java/brut/androlib/decode/DecodeArrayTest.java b/brut.apktool/apktool-lib/src/test/java/brut/androlib/decode/DecodeArrayTest.java new file mode 100644 index 00000000..c2bdf5e4 --- /dev/null +++ b/brut.apktool/apktool-lib/src/test/java/brut/androlib/decode/DecodeArrayTest.java @@ -0,0 +1,55 @@ +package brut.androlib.decode; + +import brut.androlib.ApkDecoder; +import brut.androlib.BaseTest; +import brut.androlib.TestUtils; +import brut.androlib.res.data.ResTable; +import brut.androlib.res.data.value.ResArrayValue; +import brut.androlib.res.data.value.ResValue; +import brut.common.BrutException; +import brut.directory.ExtFile; +import brut.util.OS; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.io.File; + +import static junit.framework.Assert.assertTrue; + +public class DecodeArrayTest extends BaseTest { + + @BeforeClass + public static void beforeClass() throws Exception { + TestUtils.cleanFrameworkFile(); + sTmpDir = new ExtFile(OS.createTempDirectory()); + TestUtils.copyResourceDir(MissingVersionManifestTest.class, "decode/issue1994/", sTmpDir); + } + + @AfterClass + public static void afterClass() throws BrutException { + OS.rmdir(sTmpDir); + } + + @Test + public void decodeStringArray() throws BrutException { + String apk = "issue1994.apk"; + ApkDecoder apkDecoder = new ApkDecoder(new File(sTmpDir + File.separator + apk)); + + ResTable resTable = apkDecoder.getResTable(); + ResValue value = resTable.getResSpec(0x7f020001).getDefaultResource().getValue(); + + assertTrue("Not a ResArrayValue. Found: " + value.getClass(), value instanceof ResArrayValue); + } + + @Test + public void decodeArray() throws BrutException { + String apk = "issue1994.apk"; + ApkDecoder apkDecoder = new ApkDecoder(new File(sTmpDir + File.separator + apk)); + + ResTable resTable = apkDecoder.getResTable(); + ResValue value = resTable.getResSpec(0x7f020000).getDefaultResource().getValue(); + + assertTrue("Not a ResArrayValue. Found: " + value.getClass(), value instanceof ResArrayValue); + } +} diff --git a/brut.apktool/apktool-lib/src/test/resources/decode/issue1994/issue1994.apk b/brut.apktool/apktool-lib/src/test/resources/decode/issue1994/issue1994.apk new file mode 100644 index 00000000..2443f683 Binary files /dev/null and b/brut.apktool/apktool-lib/src/test/resources/decode/issue1994/issue1994.apk differ