Android 14.0.0 Release 31 (AP1A.240405.002.A1)
Merge cherrypicks of ['googleplex-android-review.googlesource.com/25735388'] into 24Q1-release.

Change-Id: I0f2bc52a7c65d49abc5ec3bac9a39095a1fd472d
tree: 41bdc8465c9a8d2d66b5637a5d210b1f01e9657f
  1. baksmali/
  2. deodexerant/
  3. dexlib2/
  4. examples/
  5. gradle/
  6. scripts/
  7. smali/
  8. smali-integration-tests/
  9. third_party/
  10. util/
  11. .gitignore
  12. Android.bp
  13. AUTHORS
  14. build.gradle
  15. CONTRIBUTING.md
  16. gradle.properties
  17. gradlew
  18. gradlew.bat
  19. METADATA
  20. OWNERS
  21. README.md
  22. settings.gradle
README.md

About

smali/baksmali is an assembler/disassembler for the dex format used by dalvik, Android‘s Java VM implementation. The syntax is loosely based on Jasmin’s/dedexer's syntax, and supports the full functionality of the dex format (annotations, debug info, line info, etc.)

NOTE: This is a fork of https://github.com/JesusFreke/smali for patches needed by Google as the original repository is currently not maintained. After forking the namespace was changed from org.jf to com.android.tools.smali. The artifacts are released on Google Maven under the following coordinates:

After the fork the first version released was 3.0.0, which was version 2.5.2 from the original repo with a few patches and the namespace change.

Support

Some useful links for getting started with smali

Building

./gradlew assemble

Command Line Version

To run the smali and baksmali tools from the command line build the fat jars. The fat jars will be named with the current version followed by the first 8 characters of the current git hash followed by an optional -dirty if the repository was dirty when building and ending in -fat . The fat jar can be invoked with java -jar.

./gradlew smali:fatJar
java -jar smali/build/libs/smali-x.y.z-aaaaaaaa-dirty-fat.jar

Testing

To execute all tests run

./gradlew test

Testing Maven Release

Push a release version to your local maven repository (add -Dmaven.repo.local=<dir> to override the default local maven repository location)

./gradlew release publishToMavenLocal

Prepare and build a release version

To prepare a release update build.gradle with the next release version and commit that. Then create a tag for that commit with the version.

git tag <version> <commit>
git push origin <version>

Release versions can then be built by the Google R8 team using:

tools/trigger.py --smali=<version> --release

in the R8 repository.

The status of the build on the bot is at https://ci.chromium.org/p/r8/builders/ci/smali.

Releasing versions on Google Maven

TBD.