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 9bd17278..7913b30d 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 @@ -123,12 +123,19 @@ public class ARSCDecoder { mPkg = new ResPackage(mResTable, id, name); nextChunk(); - while (mHeader.type == Header.TYPE_LIBRARY) { - readLibraryType(); - } - - while (mHeader.type == Header.TYPE_SPEC_TYPE) { - readTableTypeSpec(); + boolean flag = true; + while (flag) { + switch (mHeader.type) { + case Header.TYPE_LIBRARY: + readLibraryType(); + break; + case Header.TYPE_SPEC_TYPE: + readTableTypeSpec(); + break; + default: + flag = false; + break; + } } return mPkg; diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/StringBlock.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/StringBlock.java index 2bff1b04..a06ff9e2 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/StringBlock.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/StringBlock.java @@ -302,8 +302,8 @@ public class StringBlock { try { return (m_isUTF8 ? UTF8_DECODER : UTF16LE_DECODER).decode(wrappedBuffer).toString(); } catch (CharacterCodingException ex) { - LOGGER.warning("Failed to decode a string at offset " + offset + " of length " + length); if (!m_isUTF8) { + LOGGER.warning("Failed to decode a string at offset " + offset + " of length " + length); return null; } }