如何在Android Studio中实现两个Gradle任务的并行运行?
Android Studio中Gradle任务串行阻塞Activity重载的解决办法
问题背景
- 应用启动后,执行项目内无关Gradle任务时,「Restart Activity」操作会被完全阻塞,必须等待任务执行完毕才能完成重载
- 测试两个独立Gradle任务(一个延时任务、一个输出任务),在Android Studio中必须串行执行,但IntelliJ IDEA可正常并行运行
- 已在
gradle.properties中配置:
仅启用了守护进程,并行执行未生效org.gradle.daemon=true org.gradle.parallel=true
原因说明
这是Android Studio的已知行为:默认情况下,IDE会将所有Gradle任务调度到同一个关联项目的执行线程池,即便任务间无依赖关系,也会强制串行执行。而IntelliJ IDEA对非Android项目的Gradle任务采用了更宽松的调度策略,允许无依赖任务并行。
可行解决方案
1. 配置Android Studio的Gradle并行执行设置
打开File > Settings > Build, Execution, Deployment > Build Tools > Gradle:
- 勾选Parallel execution on the same project选项
- 补充
gradle.properties配置(适配Gradle 6.0+):org.gradle.configuration-cache=true org.gradle.parallel=true org.gradle.workers.max=4 # 根据CPU核心数调整,8核建议设为6-8 - 保存配置后重启Android Studio
2. 终端启动独立守护进程执行任务
在Android Studio的Terminal中执行Gradle任务时,添加--no-reuse-daemon参数,强制启动独立的Gradle守护进程,避免与IDE的守护进程抢占资源:
./gradlew yourCustomTask --no-reuse-daemon
3. 自定义任务分组优化
如果是自己编写的Gradle任务,将任务分组设为非Android默认分组(比如custom),IDE对不同分组的任务调度限制更宽松:
task delayTask { group = "custom" doLast { Thread.sleep(10000) println("Delay task finished") } } task printTask { group = "custom" doLast { println("Print task finished") } }
4. 升级Android Studio至最新稳定版
部分旧版本(如低于Arctic Fox)的Android Studio对Gradle并行执行的支持存在缺陷,升级到最新版可修复此类调度问题。
验证方式
执行两个无依赖的自定义任务,观察是否同时启动;启动应用后执行无关任务,尝试点击「Restart Activity」,确认是否不再被阻塞。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

