Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | - | - | ||||
baksmali/ | H | 25-Apr-2025 | - | 7,704 | 4,704 | |
deodexerant/ | H | 25-Apr-2025 | - | 151 | 93 | |
dexlib2/ | H | 25-Apr-2025 | - | 74,333 | 42,423 | |
examples/ | H | 25-Apr-2025 | - | 740 | 517 | |
gradle/wrapper/ | H | 25-Apr-2025 | - | 6 | 5 | |
scripts/ | H | 25-Apr-2025 | - | 172 | 78 | |
smali/ | H | 25-Apr-2025 | - | 39,916 | 30,175 | |
smali-integration-tests/src/ | H | 25-Apr-2025 | - | 144,419 | 142,871 | |
third_party/ | H | 25-Apr-2025 | - | 8,926 | 6,527 | |
util/ | H | 25-Apr-2025 | - | 1,233 | 779 | |
.gitignore | H A D | 25-Apr-2025 | 156 | 13 | 12 | |
AUTHORS | H A D | 25-Apr-2025 | 227 | 9 | 6 | |
Android.bp | H A D | 25-Apr-2025 | 1.1 KiB | 38 | 33 | |
CONTRIBUTING.md | H A D | 25-Apr-2025 | 1.1 KiB | 29 | 21 | |
LICENSE | H A D | 25-Apr-2025 | 15.6 KiB | 295 | 242 | |
METADATA | H A D | 25-Apr-2025 | 596 | 20 | 18 | |
OWNERS | H A D | 25-Apr-2025 | 39 | 3 | 2 | |
README.md | H A D | 25-Apr-2025 | 3.1 KiB | 72 | 56 | |
build.gradle | H A D | 25-Apr-2025 | 7 KiB | 211 | 184 | |
gradle.properties | H A D | 25-Apr-2025 | 47 | 2 | 2 | |
gradlew | H A D | 25-Apr-2025 | 5.6 KiB | 186 | 125 | |
gradlew.bat | H A D | 25-Apr-2025 | 2.7 KiB | 90 | 68 | |
settings.gradle | H A D | 25-Apr-2025 | 79 | 1 | 1 |
README.md
1### About 2 3smali/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.) 4 5**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](https://maven.google.com) under the following coordinates: 6 7* [`com.android.tools.smali:smali:<version>`](https://maven.google.com/web/index.html?q=smali#com.android.tools.smali:smali) 8* [`com.android.tools.smali:smali-dexlib2:<version>`](https://maven.google.com/web/index.html?q=smali-dexlib2#com.android.tools.smali:smali-dexlib2) 9* [`com.android.tools.smali:smali-baksmali:<version>`](https://maven.google.com/web/index.html?q=smali-baksmali#com.android.tools.smali:smali) 10* [`com.android.tools.smali:smali-util:<version>`](https://maven.google.com/web/index.html?q=smali-util#com.android.tools.smali:smali-util) 11 12After 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. 13 14#### Support 15- [github Issue tracker](https://github.com/google/smali/issues) - For any bugs/issues/feature requests 16 17#### Some useful links for getting started with smali 18 19- [Official dex bytecode reference](https://source.android.com/devices/tech/dalvik/dalvik-bytecode.html) 20- [Registers wiki page](https://github.com/JesusFreke/smali/wiki/Registers) 21- [Types, Methods and Fields wiki page](https://github.com/JesusFreke/smali/wiki/TypesMethodsAndFields) 22- [Official dex format reference](https://source.android.com/devices/tech/dalvik/dex-format.html) 23 24### Building 25``` 26./gradlew assemble 27``` 28### Command Line Version 29 30To run the `smali` and `baksmali` tools from the command line build the fat 31jars. The fat jars will be named with the current version followed by the first 328 characters of the current git hash followed by an optional `-dirty` if the 33repository was dirty when building and ending in -fat . The fat jar can be 34invoked with `java -jar`. 35``` 36./gradlew smali:fatJar 37java -jar smali/build/libs/smali-x.y.z-aaaaaaaa-dirty-fat.jar 38``` 39 40### Testing 41 42To execute all tests run 43``` 44./gradlew test 45``` 46 47### Testing Maven Release 48Push a release version to your local maven repository (add 49`-Dmaven.repo.local=<dir>` to override the default local maven repository 50location) 51``` 52./gradlew release publishToMavenLocal 53``` 54 55### Prepare and build a release version 56To prepare a release update `build.gradle` with the next release version and commit that. 57Then create a tag for that commit with the version. 58``` 59git tag <version> <commit> 60git push origin <version> 61``` 62Release versions can then be built by the Google R8 team using: 63``` 64tools/trigger.py --smali=<version> --release 65``` 66in the R8 repository. 67 68The status of the build on the bot is at https://ci.chromium.org/p/r8/builders/ci/smali. 69 70### Releasing versions on Google Maven 71TBD. 72