From 7d76829ad93a3fb2f468737f727d53fa0df203a5 Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Wed, 23 Aug 2023 07:26:21 -0400 Subject: [PATCH 1/4] feat: shorten archive name to apktool-{version}.jar (#3289) --- .github/workflows/build.yml | 2 +- brut.apktool/apktool-cli/build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fb431c78..3fd6d796 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -100,4 +100,4 @@ jobs: uses: actions/upload-artifact@v3 with: name: apktool.jar - path: brut.apktool/apktool-cli/build/libs/apktool-*-SNAPSHOT.jar + path: brut.apktool/apktool-cli/build/libs/apktool-v* diff --git a/brut.apktool/apktool-cli/build.gradle.kts b/brut.apktool/apktool-cli/build.gradle.kts index 2da6dd17..722e8924 100644 --- a/brut.apktool/apktool-cli/build.gradle.kts +++ b/brut.apktool/apktool-cli/build.gradle.kts @@ -69,6 +69,6 @@ tasks.register("proguard") { dontwarn("javax.xml.xpath.**") dontnote("**") - val outPath = "build/libs/apktool-cli-$apktoolVersion.jar" + val outPath = "build/libs/apktool-$apktoolVersion.jar" outjars(outPath) } From b6e283ee62ad0f39ce14d02b76877350b4b4bf4b Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Wed, 23 Aug 2023 19:03:22 -0400 Subject: [PATCH 2/4] fix: obtain git history for proper "git describe" (#3291) --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3fd6d796..12247ab0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -88,6 +88,8 @@ jobs: - build-and-test-with-Java-8-and-later steps: - uses: actions/checkout@v3 + with: + fetch-depth: 0 - uses: actions/setup-java@v3 with: distribution: 'zulu' From 06c5f462e0c7c67703d58762a2919697306da947 Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Sat, 26 Aug 2023 21:39:42 -0400 Subject: [PATCH 3/4] refactor: use proper enum (0 on both) for setMethod() (#3297) --- .../apktool-lib/src/main/java/brut/androlib/res/Framework.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/Framework.java b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/Framework.java index 96d83fab..87148180 100644 --- a/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/Framework.java +++ b/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/Framework.java @@ -77,7 +77,7 @@ public class Framework { crc.update(data); entry = new ZipEntry("resources.arsc"); entry.setSize(data.length); - entry.setMethod(ZipOutputStream.STORED); + entry.setMethod(ZipEntry.STORED); entry.setCrc(crc.getValue()); out.putNextEntry(entry); out.write(data); From 81a7e1e4345edfebf58086756e1cc53b0b776c27 Mon Sep 17 00:00:00 2001 From: Connor Tumbleson Date: Sun, 27 Aug 2023 15:06:58 -0400 Subject: [PATCH 4/4] fix: only mark as sparse if intended application (#3299) --- .../src/main/java/brut/androlib/res/decoder/ARSCDecoder.java | 4 +++- .../src/test/java/brut/androlib/decode/SparseFlagTest.java | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) 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 16a33951..38c20897 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 @@ -270,7 +270,9 @@ public class ARSCDecoder { mHeader.checkForUnreadHeader(mIn); - if ((typeFlags & 0x01) != 0) { + // Be sure we don't poison mResTable by marking the application as sparse + // Only flag the ResTable as sparse if the main package is not loaded. + if ((typeFlags & 0x01) != 0 && !mResTable.isMainPkgLoaded()) { mResTable.setSparseResources(true); } diff --git a/brut.apktool/apktool-lib/src/test/java/brut/androlib/decode/SparseFlagTest.java b/brut.apktool/apktool-lib/src/test/java/brut/androlib/decode/SparseFlagTest.java index 276fbf63..c3959250 100644 --- a/brut.apktool/apktool-lib/src/test/java/brut/androlib/decode/SparseFlagTest.java +++ b/brut.apktool/apktool-lib/src/test/java/brut/androlib/decode/SparseFlagTest.java @@ -54,6 +54,7 @@ public class SparseFlagTest extends BaseTest { LOGGER.info("Decoding sparse.apk..."); Config config = Config.getDefaultConfig(); + config.frameworkTag = "issue-3298"; ApkDecoder apkDecoder = new ApkDecoder(config, testApk); ApkInfo apkInfo = apkDecoder.decode(sTestNewDir); @@ -70,6 +71,7 @@ public class SparseFlagTest extends BaseTest { LOGGER.info("Decoding not-sparse.apk..."); Config config = Config.getDefaultConfig(); + config.frameworkTag = "issue-3298"; ApkDecoder apkDecoder = new ApkDecoder(config, testApk); ApkInfo apkInfo = apkDecoder.decode(sTestNewDir);