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 a490d56e..41bb073c 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 @@ -139,6 +139,12 @@ public class ARSCDecoder { } } + private void resSparseTypeEntry() throws AndrolibException, IOException { + // uint_32_t - entry + int index = mIn.readInt(); + int offset = mIn.readInt(); + } + private ResTypeSpec readTableTypeSpec() throws AndrolibException, IOException { mTypeSpec = readSingleTableTypeSpec(); addTypeSpec(mTypeSpec); @@ -192,7 +198,8 @@ public class ARSCDecoder { mTypeSpec = mResTypeSpecs.get(typeId); } - /* res0, res1 */mIn.skipBytes(3); + int typeFlags = mIn.readByte(); + /* reserved */mIn.skipBytes(2); int entryCount = mIn.readInt(); int entriesStart = mIn.readInt(); mMissingResSpecs = new boolean[entryCount]; @@ -219,6 +226,11 @@ public class ARSCDecoder { mType = flags.isInvalid && !mKeepBroken ? null : mPkg.getOrCreateConfig(flags); + if (typeFlags == 1) { + System.err.println("I don't have a parsed resource yet to test. So die out until I find one."); + System.exit(1); + } + for (int i = 0; i < entryOffsets.length; i++) { if (entryOffsets[i] != -1) { mMissingResSpecs[i] = false;