Gradle构建耗时过长求助:10MB应用每次构建需2-3分钟
我来帮你梳理下可能导致构建耗时2-3分钟的几个关键点,结合你提供的配置文件来看:
1. 先清理重复的依赖
看你的app模块build.gradle里,重复添加了stetho-realm的依赖:
implementation 'com.uphyca:stetho_realm:2.2.2' implementation 'com.uphyca:stetho_realm:2.1.0'
重复依赖会让Gradle额外做冲突解析工作,直接删掉其中一个(建议保留最新的2.2.2版本),能减少不必要的开销。
2. 升级Gradle相关组件的版本
你的Gradle插件版本是3.1.2,这是比较老旧的版本了,Google后续的Gradle插件(比如7.x系列)在构建性能上做了大量优化。同时记得同步升级Gradle wrapper版本(比如插件3.1.2对应Gradle4.4,最新稳定版插件对应Gradle7.4+)。
另外,你的Firebase依赖版本是12.0.1,这个版本太老了,建议升级到较新的稳定版本(注意保持所有Firebase依赖的版本一致),新SDK不仅修复了很多问题,也优化了构建时的依赖处理逻辑。还有Google服务插件3.2.0也可以同步升级到最新稳定版。
3. 配置Gradle的性能优化参数
在项目根目录的gradle.properties文件里添加以下配置,开启Gradle官方推荐的性能优化特性:
# 启用守护进程,避免每次构建重新启动JVM org.gradle.daemon=true # 并行构建多个模块 org.gradle.parallel=true # 按需配置模块,减少不必要的配置工作 org.gradle.configureondemand=true # 启用构建缓存,重复构建时复用之前的结果 org.gradle.caching=true # 给Gradle分配足够的内存,避免内存不足导致构建卡顿 org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
这些配置能大幅减少重复构建的时间,尤其是后续的增量构建。
4. 排查插件对构建的影响
你集成了Realm、Fabric、Firebase Performance这些插件,部分插件会在构建过程中做字节码插桩操作,可能拖慢构建速度:
- Firebase Performance插件:可以先尝试暂时禁用它(注释掉
apply plugin: 'com.google.firebase.firebase-perf'),看看构建时间是否有明显下降。如果确实是它的问题,可以考虑只在release构建中启用,或者调整它的插桩范围。 - Realm插件:确保使用的是最新版本的Realm Gradle插件,旧版本可能存在构建性能瓶颈。
5. 精简仓库配置
你的根build.gradle里的仓库配置有重复,比如google()和maven { url "https://maven.google.com" }是同一个仓库,重复添加会让Gradle在查找依赖时多走不必要的流程,建议统一保留google()即可,删掉重复的maven仓库配置。
6. 移除未启用的依赖
你提到unity-ads暂时未启用,建议把它的依赖注释掉,或者移除对应的模块引用,避免Gradle处理未使用的依赖。
最后一步:精准定位耗时环节
执行以下命令生成构建性能报告:
# Mac/Linux ./gradlew clean build --profile # Windows gradlew.bat clean build --profile
构建完成后,在build/reports/profile目录下会生成HTML报告,里面会详细列出每个构建任务的耗时,能帮你精准定位到底是哪个环节拖慢了构建速度。
内容的提问来源于stack exchange,提问作者zngb

