diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ARSCDecoder.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ARSCDecoder.java index ebaacb1c..f98a34aa 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ARSCDecoder.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ARSCDecoder.java @@ -151,7 +151,7 @@ public class ARSCDecoder { } } - private ResTypeSpec readTableTypeSpec() throws AndrolibException, IOException { + private void readTableTypeSpec() throws AndrolibException, IOException { mTypeSpec = readSingleTableTypeSpec(); addTypeSpec(mTypeSpec); @@ -162,6 +162,12 @@ public class ARSCDecoder { resTypeSpec = readSingleTableTypeSpec(); addTypeSpec(resTypeSpec); type = nextChunk().type; + + // We've detected sparse resources, lets record this so we can rebuild in that same format (sparse/not) + // with aapt2. aapt1 will ignore this. + if (! mResTable.getSparseResources()) { + mResTable.setSparseResources(true); + } } while (type == Header.TYPE_TYPE) { @@ -177,8 +183,6 @@ public class ARSCDecoder { addMissingResSpecs(); } - - return mTypeSpec; } private ResTypeSpec readSingleTableTypeSpec() throws AndrolibException, IOException {