Apktool v2.12.0 Released

Apktool v2.12.0 has been released! This is the last feature release in Apktool 2 adding support for API 36 (Baklava), fixing shared library support and micro optimizations around the codebase. Igor Eisberg has once again led the majority of development with this release working on many exciting changes.
The cat n' mouse game we play with ApkEditor never ends and this release takes a few more steps to defend against ApkEditor's "protect mode" which is designed to prevent disassembly.
Igor went on the journey to begin the deprecation of aapt1. Not wanting to lose a decade of test coverage we migrated all tests over to aapt2 and looked what was broken. If the test failure was because of a more restrictive aapt2 we marked that test for removal. If that test pointed a flaw in Apktool or something else - it was resolved.
This was why shared library support was finally fixed in aapt2. With a new CLI parameter to drive dynamic libraries you can ensure shared libraries are assigned with proper package ids on build.
-l, --lib <package>:<location>
A bit of refactoring occurred to prepare for Apktool 3 which is already underway. As mentioned many times before this upcoming release will remove aapt1 entirely. We've seen AOSP over the past year no longer port changes to aapt1 so it marks our time to remove it to reduce our codebase complexity.

Our documentation site has been adjusted to support versioned documentation so we can keep Apktool 2 and 3 separated. Docusaurus made this very easy so I applaud that software for being amazing to use. In order to finalize automated releases in the future we've moved the documentation out of a branch on the main repository to a new "apktool.org" repository.
All focus is now on Apktool 3.
Sponsors
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 27 commits by 3 people & 1 robot.
- 12 - Dependabot (Robot)
- 9 - Connor Tumbleson (iBotPeaches)
- 5 - Igor Eisberg
- 1 - vbfox
Changes since 2.11.1
- [#3857] Add support for API 36 (Baklava).
- [#3865] Add
-l/--lib
to specify shared libraries. (Thanks IgorEisberg) - [#3865] Fix support of shared libraries, parsing
pkgId
instead of guessing. (Thanks IgorEisberg) - [#3826] Fix escaping of CDATA like strings. (Thanks vbfox)
- [#3849] Fix redundant flags in flag attrs. (Thanks IgorEisberg)
- [#3838] Fix crash from ApkEditor "protect" mode.
- [#3865] Change all tests to use aapt2 to phase out aapt1. (Thanks IgorEisberg)
- [#3835] Upgrade
gradle/actions
to4.3.1
. - [#3846] Upgrade
commons-io
to2.19.0
. - [#3844] Upgrade
commons-text
to1.13.1
. - [#3836, #3845, #3852] Upgrade
google/guava
to33.4.7-jre
. - [#3884, #3897] Upgrade
xmlunit
to2.10.3
.
Notes
- This is the last feature release with aapt1 support. The next major release (v3) will remove aapt1.
Download
- Apktool 2.12.0
c7f6b32ce4c62fdcbc6065dcac634db3
(md5)effb69dab2f93806cafc0d232f6be32c2551b8d51c67650f575e46c016908fdd
(sha256)- Rename to
apktool.jar
and follow the Instruction Guide if you need help.
- 2.12.0 Doc Site Post