Ramblings of a Tampa engineer

Apktool v2.9.1 has been released! This release is a fast follow with bug fixes from the quite large v2.9.0 release. Overall - very happy with only 1 regression from the huge amount of changes we did during the v2.9.0 release. I did remove the docker images recently added in v2.9.0 as those haven't quite stabilized at the level I expect. I've got a bit more to learn with docker with all the file system requirements Apktool has - then that will return.

Dependabot has become quite a life saver and keeps dependencies up to date whether its the CI pipeline or child dependencies.

This release continues the battle against Apktool's challenge of building applications on build tools that are almost always newer than the source application was built from. This led to changes for references, null values and stripping duplicate attribute properties.

It also has a quick patch for supporting disassembly of the new Android 14 QBR2 beta applications.


I launched GitHub Sponsors to help provide another alternative for folks showing appreciation. I want to remind folks of two companies that continue to hold a monthly donation for the project.

  • Emerge Tools came online to sponsor the tool.
  • Sourcetoad (self employer) additionally joined to sponsor (as well as a few other projects).

This release had 38 commits by 4 people and 1 robot

  • Connor Tumbleson (iBotPeaches) - 27 commits
  • Dependabot (BOT) - 8 commits
  • ArjunaKumarMohanta - 1 commit
  • Andrew Szeto - 1 commit
  • Josh Miers - 1 commit

Changes since 2.9.0

  • [#3362] Add support for building on Java 21.
  • [#3425] Add test for isAccessibilityTool.
  • [#3428] Add support for Android QBR2.
  • [#3399] Fix regression with api-level not passing to baksmali. (Thanks JoshMiers-FS)
  • [#3378] Fix issue with docker building closed prs.
  • [#3400] Fix issue with duplicated attribute names in styles.
  • [#3416] Fix issue with writing null value resources.
  • [#3421] Fix issue with aapt2 falling on private resources.
  • [#3427] Fix issue with treating warnings as errors in aapt2.
  • [#3377] Remove Docker published package.
  • [#3376] Upgrade Gradle to 8.4. (Thanks ArjunaKumarMohanta)
  • [#3414, #3453] Upgrade commons-io to 2.15.1.
  • [#3413] Upgrade commons-cli to 1.6.0.
  • [#3443] Upgrade commons-lang3 to 3.14.0.
  • [#3414] Upgrade commons-text to 1.11.0.
  • [#3454] Upgrade actions/setup-java to 4.
  • [#3384] Upgrade docker/build-push-action to v5.
  • [#3445] Upgrade gradle/gradle-build-action to 2.10.0.
  • [#3386] Upgrade docker/setup-buildx-action to v3.
  • [#3385] Upgrade docker/login-action to v3.
  • [#3444] Upgrade proguard/gradle to 7.4.1.


  • The v2.9.x releases have moved to aapt2 being the default. If you'd like to return to the previous behavior, please use --use-aapt1 during build stage.


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.