Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
"`classes.dex` method count helpers. Requires smali/baksmali from https://code.google.com/p/smali/ and dexdump from the build-tools in the Android SDK be on your PATH." Use this to keep track of methods and fields in your apk. They are both limited to 65536. Example use: $ source dex-count.sh; $ dex-field-count classes.dex; Original method scrip…
function dex-method-count() {
cat $1 | head -c 92 | tail -c 4 | hexdump -e '1/4 "%d\n"'
}
function dex-method-count-by-package() {
dir=$(mktemp -d -t dex)
baksmali $1 -o $dir
for pkg in `find $dir/* -type d`; do
smali $pkg -o $pkg/classes.dex
count=$(dex-method-count $pkg/classes.dex)
name=$(echo ${pkg:(${#dir} + 1)} | tr '/' '.')
echo -e "$count\t$name"
done
rm -rf $dir
}
function dex-field-count(){
cat $1 | head -c 84 | tail -c 4 | hexdump -e '1/4 "%d\n"'
}
function dex-field-count-by-package() {
dir=$(mktemp -d -t dex)
baksmali $1 -o $dir
for pkg in `find $dir/* -type d`; do
smali $pkg -o $pkg/classes.dex
count=$(dex-field-count $pkg/classes.dex)
name=$(echo ${pkg:(${#dir} + 1)} | tr '/' '.')
echo -e "$count\t$name"
done
rm -rf $dir
}
@jerrellmardis

This comment has been minimized.

Copy link

@jerrellmardis jerrellmardis commented Jan 4, 2014

Thanks for the script!

Baksmali/Smali usage has changed. Can you please update this gist to use baksmali/smali in the following way:

java -jar baksmali.jar ... instead of baksmali ...
java -jar smali.jar ... instead of smali ...

@tyvsmith

This comment has been minimized.

Copy link
Owner Author

@tyvsmith tyvsmith commented Feb 13, 2014

The executable scripts are still provided at https://bitbucket.org/JesusFreke/smali/downloads, which essentially wrap the jar in your path.

"This script is a wrapper around baksmali.jar, so you can simply call
"baksmali", instead of java -jar baksmali.jar. It is heavily based on
the "dx" script from the Android SDK"

@mandrachek

This comment has been minimized.

Copy link

@mandrachek mandrachek commented Feb 14, 2014

Hey, could you maybe turn this into a gradle plugin? :)

@tyvsmith

This comment has been minimized.

Copy link
Owner Author

@tyvsmith tyvsmith commented Mar 14, 2014

@mandrachek I'll look into it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment