From 1243dd5546a3ba56fba133d40ff6a4379792dc4e Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Wed, 9 Aug 2023 08:38:34 -0400 Subject: [PATCH] Refactor logging for chunks and sparse flags. (#3260) * refactor: log each chunk in verbose mode * refactor: drop unneeded ":" from log output * refactor: spit out sparse message once --- .../src/main/java/brut/androlib/res/data/ResTable.java | 4 +++- .../main/java/brut/androlib/res/decoder/ARSCDecoder.java | 8 +++++--- .../java/brut/androlib/res/decoder/ResFileDecoder.java | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResTable.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResTable.java index 3ec0f23a..f4341d18 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResTable.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/ResTable.java @@ -256,8 +256,10 @@ public class ResTable { } public void setSparseResources(boolean flag) { + if (mApkInfo.sparseResources != flag) { + LOGGER.info("Sparsely packed resources detected."); + } mApkInfo.sparseResources = flag; - } public void clearSdkInfo() { 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 d0ecafd3..16a33951 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 @@ -65,11 +65,16 @@ public class ARSCDecoder { Set pkgs = new LinkedHashSet<>(); ResTypeSpec typeSpec; + int chunkNumber = 1; chunkLoop: for (;;) { nextChunk(); + LOGGER.fine(String.format( + "Chunk #%d start: type=0x%04x chunkSize=0x%08x", chunkNumber++, mHeader.type, mHeader.chunkSize + )); + switch (mHeader.type) { case ARSCHeader.RES_NULL_TYPE: readUnknownChunk(); @@ -266,9 +271,6 @@ public class ARSCDecoder { mHeader.checkForUnreadHeader(mIn); if ((typeFlags & 0x01) != 0) { - LOGGER.fine("Sparse type flags detected: " + mTypeSpec.getName()); - - // We've detected sparse resources, lets record this so we can rebuild in that same format mResTable.setSparseResources(true); } diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ResFileDecoder.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ResFileDecoder.java index 4632de5c..75b7fc9e 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ResFileDecoder.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/ResFileDecoder.java @@ -62,7 +62,7 @@ public class ResFileDecoder { resFileMapping.put(inFilePath, outFilePath); } - LOGGER.fine("Decoding file: " + inFilePath + " to: " + outFilePath); + LOGGER.fine("Decoding file " + inFilePath + " to " + outFilePath); try { if (typeName.equals("raw")) {