Ramblings of a Tampa engineer

Apktool v2.8.0 has been released! This release includes massive amounts of refactoring to the codebase to speed development on the never ending game of resource obfuscation.

Large changes you'll notice as a developer are:

  • Remove Androlib for ApkBuilder and ApkDecoder
  • Extract aapt/aapt2 into AaptInvoker class
  • Refactored ARSCDecoder to support unified chunk loading
  • Refactored AXmlResourceParser to leverage same chunk loading
  • Smali is pulled from Google now instead of JesusFreke

Large changes you'll notice as an end user are:

  • Support for Upside Down Cake & Vanilla Ice Cream (API 34+)
  • Enhance decoder for common obfuscation techniques
  • Relax aapt failures that succeed in aapt2
  • Fix crashing on common Meta applications

Changes you'll notice as a frequent user of the GitHub project:

I'd like to thank all the contributors, but especially sv99 for their effort in giving the code base a serious facelift. That effort gave me enough of a drive to spend some serious time on Apktool over the last month to finalize this release. I went into further details about this release and Apktool in general in yesterday's blog post.


This release had 153 commits by 9 people and 1 robot

  • Connor Tumbleson (iBotPeaches) - 122 commits
  • sv99 - 9 commits
  • Slava Volkov - 8 commits
  • Dependabot (BOT) - 6 commits
  • ArjunaKumarMohanta - 3 commits
  • AARON - 1 commit
  • Crimson - 1 commit
  • Igor Eisberg - 1 commit
  • Marc Miltenberger - 1 commit
  • jason.liao - 1 commit

Changes since 2.7.0

  • [#3041] Add SDK U (API 34) Preview Support
  • [#3115] Add SDK V (API ?) Preview Support
  • [#2976] Add CI testing for Java versions 18 & 19
  • [#2978] Add support for parsing applications with config flag size > 8 (from 28).
  • [#3070] Add support for running apktool via gradle. (Thanks sv99)
  • [#2980] Add support for 0_resource_name_obfuscated
  • [#3113] Add support for Upside Down Cake & Vanilla Ice Cream SDK Shorthand.
  • Remove CI testing for Java versions: 9, 10, 12, 13, 14, 15 and 17.
  • [#2998] Fix issue parsing empty resources.asrc. (Thanks IgorEisberg)
  • [#3008] Fix issue with larger apktool.yml files.
  • [#3030] Fix issue with parsing XML_TYPE_OVERLAY.
  • [#3071] Fix issue with aapt/aapt2 in edge cases waiting 15 seconds for output. (Thanks sv99)
  • [#3104] Fix NPE when decoding namespace missing from string pool.
  • [#2981] Fix preference order when bogus values fill spring pool instead preferring res table.
  • [#1927, #2484] Fix assembly with aapt1 when duplicate bag items are detected.
  • [#3133] Fix config flag support for 64 byte header, adding localeNumberingSystem.
  • [#3036] Fix issue crashing out when reading entries past chunk end.
  • [#3088] Refactor brut.androlib.err to brut.androlib.exceptions for standard naming convention of Exceptions. (Thanks sv99)
  • [#3091] Refactor Build/Decode to work from common Config object. (Thanks sv99)
  • [#3103] Refactor into ApkBuilder and ApkDecoder instead of generic Androlib. (Thanks sv99)
  • [#3105] Refactor new class Framework to lessen responsibility of AndrolibResources. (Thanks sv99)
  • [#3106] Refactor ApkDecoder to split methods for MetaInfo towards ResTable. (Thanks sv99)
  • [#3109] Refactor ApkDecoder to introduce common methods for manifest and resource operations. (Thanks sv99)
  • [#3114] Refactor Gradle workflow into its own to cut down on unrelated CI failures.
  • [#3116] Refactor *Decoders to split child classes into own class files.
  • [#3124] Refactor classes to support new ApkInvoker class. (Thanks sv99)
  • [#3119] Upgrade gradle/gradle-build-action to 2.5.1.
  • [#3079] Upgrade away from deprecated SnakeYAML constructors. (Thanks MarcMil)
  • [#3055] Upgrade codebase to use Java7 NIO library for IO. (Thanks sv99)
  • [#3050] Upgrade to smali/baksmali 3.0.3 and move to Google fork of it.
  • Upgrade to Gradle 8.2 (Thanks ArjunaKumarMohanta)
  • Upgrade commons-io to 2.13.0 from 2.11.0
  • Upgrade guava to 32.0.1-jre from 31.0.1-jre
  • Upgrade proguard_gradle to 7.3.2 from 7.3.0
  • Upgrade shadow to 8.0.0 from 7.1.0

Notes

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

Download

  • Apktool 2.8.0
    • aefd27becd2b97527c47e595bd22d8d2 (md5)
    • b331323ebf325d63e13375a6147915f9dac048f0f1f86783806f925941748dbc (sha256)
    • Rename to apktool.jar and follow the Instruction Guide if you need help.
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.