如何查看 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