统计 DEX 文件(.dex 格式的文件)中的方法数。
编译自己的工程
对自己的工程进行编译、打包,生成 APK 文件或者 aar 文件
获取 DEX 文件
解压 APK 文件或者 aar 文件。
- 如果是 APK 文件,解压后的目录中直接包含所有的 DEX 文件。
- 如果是 aar 文件,解压后的目录中只有 class.jar 文件,需要把 class.jar 文件转为 DEX 文件。可以使用 Android SDK 中的 dex 工具进行转换:
dx --dex --verbose --no-strict --output=classes.jar.dex classes.jar
需要在 dx 文件目录下执行命令,否则会报找不到 dx 命令的错误。
例如我的 dx 文件目录是:~/Library/Android/sdk/build-tools/28.0.3/dx
获取 dex-method-counts 工程
从 GitHub 上获取 dex-method-counts 工程源码,地址:https://github.com/mihaip/dex-method-counts
统计方法数
获取 dex-method-counts 工程源码之后,进入 dex-method-counts 工程源码根目录。
执行 ./gradlew assemble
命令,编译工程:
./gradlew assemble
编译成功之后,会输出以下信息:
Starting a Gradle Daemon (subsequent builds will be faster)
:compileJava
:processResources UP-TO-DATE
:classes
:jar
:startScripts
:distTar
:distZip
:assemble
BUILD SUCCESSFUL
接着,把之前获取到的 DEX 文件(例如我的 DEX 文件是:classes.jar.dex)拷贝到 dex-method-counts 工程源码根目录。
然后,执行统计方法数的命令:
./dex-method-counts classes.jar.dex
输出信息如下:
Processing classes.jar.dex
Read in 23 method IDs.
<root>: 23
com: 21
xy: 21
android: 21
common: 21
java: 2
lang: 2
Overall method count: 23
根据输出信息,得出 DEX 文件中包含 23 个方法。