如何查看 Android App 的方法总数

大家都知道 Android 有 65535 方法数的问题,也就是说 App 的 Java 代码 Method 总数、Field 总数都不能超过 65535 个,那我们有什么办法能查看我们 App 的这个值已经有多少了呢?

dexdump 命令

# 查看 apk 的 method 总数
dexdump -f app.apk | grep method_ids_size

# 查看 apk 的 field 总数
dexdump -f app.apk | grep field_ids_size

dexdump 支持 .dex.jar.zip.apk 后缀的文件,所以不需要将 apk 反编译成 jar。这个命令是 Android SDK 自带的,路径在:

${ANDROID_SDK}/build-tools/23.0.1/dexdump

有一个需要注意的地方:对 apk 的统计只针对单个 dex。如果你的 apk 有多个 dex,只会计算 classes.dex 的方法数,多个 dex 的情况需要手动解包后分别统计再相加。当然,随着 build-tools 版本升级,以后也许会支持多 dex 的统计。

使用 Gradle 插件 dexcount-gradle-plugin

如果使用 Android Studio,可以使用这个插件,插件地址在这里

在 Gradle 脚本里加入以下配置即可:

buildscript {
    repositories {
        mavenCentral() // or jCenter()
    }
    dependencies {
        classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.2.1'
    }
}
apply plugin: 'com.getkeepsafe.dexcount'

当你执行编译和打包命令时,这个插件会自动运行,执行结果会被详细记录在:

/app/build/outputs/dexcount/debug.txt