A tool for reverse engineering Android apk files
Go to file
Igor Eisberg b49e77087d
Some checks failed
Analyze / Analyze (push) Has been cancelled
CI / analyze-mac-aapt (aapt2_64) (push) Has been cancelled
CI / analyze-mac-aapt (aapt_64) (push) Has been cancelled
CI / analyze-linux-aapt (aapt) (push) Has been cancelled
CI / analyze-linux-aapt (aapt2) (push) Has been cancelled
CI / analyze-linux-aapt (aapt2_64) (push) Has been cancelled
CI / analyze-linux-aapt (aapt_64) (push) Has been cancelled
CI / analyze-windows-aapt (aapt.exe) (push) Has been cancelled
CI / analyze-windows-aapt (aapt2.exe) (push) Has been cancelled
CI / analyze-windows-aapt (aapt2_64.exe) (push) Has been cancelled
CI / analyze-windows-aapt (aapt_64.exe) (push) Has been cancelled
CI / Build/Test (JDK ${{ matrix.java }}, ${{ matrix.os }}) (11, macOS-latest) (push) Has been cancelled
CI / Build/Test (JDK ${{ matrix.java }}, ${{ matrix.os }}) (11, ubuntu-latest) (push) Has been cancelled
CI / Build/Test (JDK ${{ matrix.java }}, ${{ matrix.os }}) (11, windows-latest) (push) Has been cancelled
CI / Build/Test (JDK ${{ matrix.java }}, ${{ matrix.os }}) (17, macOS-latest) (push) Has been cancelled
CI / Build/Test (JDK ${{ matrix.java }}, ${{ matrix.os }}) (17, ubuntu-latest) (push) Has been cancelled
CI / Build/Test (JDK ${{ matrix.java }}, ${{ matrix.os }}) (17, windows-latest) (push) Has been cancelled
CI / Build/Test (JDK ${{ matrix.java }}, ${{ matrix.os }}) (21, macOS-latest) (push) Has been cancelled
CI / Build/Test (JDK ${{ matrix.java }}, ${{ matrix.os }}) (21, ubuntu-latest) (push) Has been cancelled
CI / Build/Test (JDK ${{ matrix.java }}, ${{ matrix.os }}) (21, windows-latest) (push) Has been cancelled
CI / Build/Test (JDK ${{ matrix.java }}, ${{ matrix.os }}) (8, macOS-latest) (push) Has been cancelled
CI / Build/Test (JDK ${{ matrix.java }}, ${{ matrix.os }}) (8, ubuntu-latest) (push) Has been cancelled
CI / Build/Test (JDK ${{ matrix.java }}, ${{ matrix.os }}) (8, windows-latest) (push) Has been cancelled
CI / Build apktool.jar (push) Has been cancelled
refactor: clean up external pull parser and introduce brut.j.xml (#3709)
* refactor: clean up external pull parser and introduce brut.j.xml

We have no need for an XML pull parser in the project,
it was only used for testing, which is now done with XPath.

The external xpp3 library from org.ogce is obsolete and has
the issue of including javax.xml.namespace.QName which conflicts
with the JRE implementation that exists for a very long time now.
This makes direct usages of QName produce very obscure NPEs that
took me hours to figure out. This patch will allow further
optimization that is WIP.
The external library was replaced by the basic xmlpull API.

The MXSerializer has been cleaned and the features used by apktool
have been integrated into the custom implementation, now part of
a separate module called brut.j.xml.
Writing has been optimized by buffering write operations, inspired
by KXmlSerializer used by Android itself.

A class XmlPullUtils also written that allows copying from a
XmlPullParser into a XmlSerializer with or without an EventHandler.
We use it for AndroidManifestPullStreamDecoder (with EventHandler,
to allow omitting the uses-sdk tag), and for ResXmlPullStreamDecoder
(direct copy, without EventHandler).

saveDocument in ResXmlPatcher was tweaked to output proper output -
a new line after declaration and a new line after root element's
end tag.

TL;DR mostly behind the scene refactor, no end user changes.
2024-10-15 06:54:03 -04:00
.github build(deps): bump gradle/actions from 4.0.1 to 4.1.0 (#3692) 2024-09-16 06:03:20 -04:00
brut.apktool refactor: clean up external pull parser and introduce brut.j.xml (#3709) 2024-10-15 06:54:03 -04:00
brut.j.common Migrate to Gradle Kotlin DSL (#3249) 2023-08-05 06:28:31 -04:00
brut.j.dir refactor: clean up external pull parser and introduce brut.j.xml (#3709) 2024-10-15 06:54:03 -04:00
brut.j.util clean up tab intendation (#3707) 2024-10-03 13:58:44 -04:00
brut.j.xml refactor: clean up external pull parser and introduce brut.j.xml (#3709) 2024-10-15 06:54:03 -04:00
gradle refactor: clean up external pull parser and introduce brut.j.xml (#3709) 2024-10-15 06:54:03 -04:00
scripts Add ability to automatically pick up latest apktool.jar version (#3683) 2024-09-06 06:30:56 -04:00
.editorconfig Add .editorconfig rules 2021-08-27 01:20:06 +08:00
.gitattributes fix: treat aapt binaries as binary 2021-08-28 14:34:13 -04:00
.gitignore build: ignore gradle.properties 2021-03-07 15:03:11 -05:00
.jitpack.yml feat: commit broken jitpack file to stop that service 2020-11-28 18:07:25 -05:00
build.gradle.kts refactor: clean up external pull parser and introduce brut.j.xml (#3709) 2024-10-15 06:54:03 -04:00
CONTRIBUTORS.md Move to official Google smali fork (#3051) 2023-04-28 19:30:06 -04:00
gradlew feat: Upgrade gradle to v8.4 (#3376) 2023-10-08 14:59:26 -04:00
gradlew.bat feat: Upgrade gradle to v8.7 (#3595) 2024-05-14 06:35:21 -04:00
INTERNAL.md Refresh aapt2 binaries. (#3651) 2024-08-01 08:12:29 -04:00
LICENSE.md refactor: change license to markdown iteration (still apache2.0) 2021-09-01 07:33:02 -04:00
README.md readme: Improve link title and wording for (#3611) 2024-05-31 06:11:09 -04:00
ROADMAP.md docs: add note about dummy resources to roadmap 2022-09-20 07:24:55 -04:00
SECURITY.md build: add SECURITY.md 2019-07-14 08:09:21 -04:00
settings.gradle.kts refactor: clean up external pull parser and introduce brut.j.xml (#3709) 2024-10-15 06:54:03 -04:00

Apktool

This is the repository for Apktool. The website is on the Apktool docs branch.

CI Software License

Apktool is a tool for reverse engineering third-party, closed, binary, Android apps. It can decode resources to nearly original form and rebuild them after making some modifications; it makes it possible to debug smali code step-by-step. It also makes working with apps easier thanks to project-like file structure and automation of some repetitive tasks such as building apk, etc.

Apktool is NOT intended for piracy and other non-legal uses. It could be used for localizing and adding features, adding support for custom platforms, and other GOOD purposes. Just try to be fair with the authors of an app, that you use and probably like.

Support

Security Vulnerabilities

If you discover a security vulnerability within Apktool, please send an e-mail to Connor Tumbleson at connor.tumbleson(at)gmail.com. All security vulnerabilities will be promptly addressed.

Sponsors

Special thanks goes to the following sponsors:

Sourcetoad

Sourcetoad is an award-winning software and app development firm committed to the co-creation of technology solutions that solve complex business problems, delight users, and help our clients achieve their goals.

Emerge Tools

Emerge Tools is a suite of revolutionary products designed to supercharge mobile apps and the teams that build them.