fix: add support for overlay spec skipping

This commit is contained in:
Connor Tumbleson 2022-03-21 07:03:14 -04:00
parent 26f39ee736
commit c300184780
No known key found for this signature in database
GPG Key ID: C3CC0A201EC7DA75

View File

@ -128,11 +128,14 @@ public class ARSCDecoder {
boolean flag = true; boolean flag = true;
while (flag) { while (flag) {
switch (mHeader.type) { switch (mHeader.type) {
case Header.XML_TYPE_SPEC_TYPE:
readTableTypeSpec();
break;
case Header.XML_TYPE_LIBRARY: case Header.XML_TYPE_LIBRARY:
readLibraryType(); readLibraryType();
break; break;
case Header.XML_TYPE_SPEC_TYPE: case Header.XML_TYPE_OVERLAY:
readTableTypeSpec(); readOverlaySpec();
break; break;
case Header.XML_TYPE_STAGED_ALIAS: case Header.XML_TYPE_STAGED_ALIAS:
readStagedAliasSpec(); readStagedAliasSpec();
@ -168,8 +171,18 @@ public class ARSCDecoder {
int count = mIn.readInt(); int count = mIn.readInt();
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
/* stagedResId */mIn.skipInt(); LOGGER.info(String.format("Skipping staged alias stagedId (%h) finalId: %h", mIn.readInt(), mIn.readInt()));
/* finalizedResId */mIn.skipInt(); }
nextChunk();
}
private void readOverlaySpec() throws IOException {
/* policyFlags */mIn.skipInt();
int count = mIn.readInt();
for (int i = 0; i < count; i++) {
LOGGER.info(String.format("Skipping overlay (%h)", mIn.readInt()));
} }
nextChunk(); nextChunk();