Dexcount Gradle Plugin:给 APK 方法数做体检的 Gradle 插件 文章目录Dexcount Gradle Plugin给 APK 方法数做体检的 Gradle 插件1、 这玩意儿是干嘛的2、 为什么要用它3、 怎么接入4、 适合哪些场景5、 一点背景Dexcount Gradle Plugin给 APK 方法数做体检的 Gradle 插件Dexcount Gradle Plugin 在 GitHub 上已经拿到 3,075 Star 了。KeepSafe 开源了这个 Gradle 插件专门干一件事统计 APK、AAR 或 Java 模块里的方法引用数量。配合 Android开发的日常构建流程用它来盯住方法数的增长别一不小心撞上 65,536 的天花板到那时候要么割肉删方法要么开 multidex都是麻烦事。1、 这玩意儿是干嘛的就一件事构建时报告 APK 里有多少方法引用。Android 早期有个硬限制单个 dex 文件最多 65,536 个方法引用。虽然现在 multidex 已经是常规操作但方法数膨胀本身仍然是性能问题。方法数多冷启动慢包体大dex 布局也乱。Dexcount 在每次构建后吐一份报告按包名分组列出方法数。哪个 package 涨得快、哪个第三方库吃方法吃得凶一眼就能看出来。2、 为什么要用它做过大型 Android 项目的人都碰到过这种场景业务跑得好好的某天构建突然报Cannot fit requested classes in a single dex file。排查半天才发现新引入的 SDK 一下子塞进来几万个方法。要早点看到方法数曲线根本不会让事情走到这一步。Dexcount 把方法数这件事可视化出来了。结合 CI 跑的话每次提 PR 都能看到方法数变化是涨了 50 个还是涨了 5,000 个代码 review 时心里有数。3、 怎么接入插件在 Gradle Plugin Portal 上ID 是com.getkeepsafe.dexcountMaven Central 上的坐标是com.getkeepsafe.dexcount:dexcount-gradle-plugin:4.0.0。环境要求Java 11 以上、Gradle 7.0 以上、Android Gradle Plugin 7.0.0 以上。自己编译插件源码的话需要 Java 17。根目录的build.gradle里加上 pluginplugins{idcom.getkeepsafe.dexcountversion4.0.0}跑一次assembleDebug构建结束后会在build/outputs/dexcount下生成报告有 txt、csv、html 三种格式挑自己顺手的看。4、 适合哪些场景中大型 Android 项目方法数已经接近 65,536需要持续监控增长趋势团队里多人协作想在 PR 阶段就把方法数暴涨的问题拦下来引入新第三方库之前先评估它对 dex 容量的占用老项目准备拆 dex 或开 multidex 之前做一次完整的方法数普查5、 一点背景com.android.dexdeps这部分 Java 代码来自 Android 源码树灵感来自 Mihail Parparita 的dex-method-counts项目。本质上就是把那个老牌命令行工具搬进了 Gradle 生态跟现代 Android 构建流程贴合得更紧。版权上归 Keepsafe Software, Inc从 2015 年维护到现在4.0.0 是当前主线版本。上归 Keepsafe Software, Inc从 2015 年维护到现在4.0.0 是当前主线版本。