Ramblings of a Tampa engineer

Apktool v2.8.1 has been released! This release has been quickly released to cover some immediate regressions from v2.8.0 as well as patching a new LTS Java feature that affected parsing malformed zip headers.

A part of me expected that refactoring ~50% of the codebase would lead to some regressions, but not the ones or quantity we had.

Turns out we had no test coverage for the exact format of the apktool.yml meta file. Since the test suite decodes and assembles - they were generating a apktool.yml on the fly. So the only way this regression was noticed if you were using older apktool.yml files against the newest release. We do have tests now to prevent this from happening again.

Next we had wide spread build failures on JDK 11 & 17 shortly after the release of v2.8.0 which became apparent with this crash.

java.util.zip.ZipException: Invalid CEN header (invalid zip64 extra data field size)

Turns out thanks to the research by evowizz - a recent Java update affected some types of applications.

Improved ZIP64 Extra Field Validation (JDK-8302483 (not public))
java.util.zip.ZipFile has been updated to provide additional validation of ZIP64 extra fields when opening a ZIP file. This validation may be disabled by setting the system property jdk.util.zip.disableZip64ExtraFieldValidation to true.

So we set some system properties to opt out of this protection.


This release had 17 commits by 4 people and 1 robot

  • Connor Tumbleson (iBotPeaches) - 11 commits
  • Igor Eisberg - 3 commits
  • ArjunaKumarMohanta - 1 commit
  • Dependabot (BOT) - 1 commit
  • sv99 - 1 commit

Changes since 2.8.0

  • [#3177] Add JDK 20 to test suite.
  • [#3179] Add run command for Gradle inline execution. (Thanks sv99)
  • Fix links on usage output for new smali & apktool links.
  • [#3165] Fix Windows issue copying files that resolved to an empty filename.
  • [#3170, #3174] Fix Java restriction with ZIP64 extra field validation.
  • [#3169] Fix regression on apktool.yml property names.
  • [#3182] Fix regression on minSdkVersion value being blown out before setting into apktool.yml.
  • [#3181] Fix regression on inefficient reading of framework files during attribute parsing.
  • [#3193] Fix regression on decoding framework file with a tag. (Thanks IgorEisberg)
  • [#3188] Refactor descriptions on commands. (Thanks IgorEisberg)
  • [#3151] Upgrade gradle/gradle-build-action to 2.6.0
  • [#3141] Upgrade to Gradle 8.2.1. (Thanks ArjunaKumarMohanta)

Notes

  • Applications are becoming more and more difficult to build with aapt1, using the --use-aapt2 flag during rebuild is a good test.

Download

You’ve successfully subscribed to Connor Tumbleson
Welcome back! You’ve successfully signed in.
Great! You’ve successfully signed up.
Success! Your email is updated.
Your link has expired
Success! Check your email for magic link to sign-in.