添加com.google.gms.google-services插件后遇StackOverflowError错误求助
解决添加Google Services插件时的StackOverflowError问题
我之前也踩过这个坑!当按照Firebase官方指南把apply plugin: 'com.google.gms.google-services'加到build.gradle底部时出现栈溢出,本质是Gradle插件版本不兼容或者插件应用顺序/第三方插件冲突触发了内部的无限递归调用。下面是我亲测有效的解决办法:
1. 严格匹配AGP和Google Services插件版本
Android Gradle Plugin(AGP)和Google Services插件的版本必须对应,不匹配很容易引发这类奇怪的循环依赖问题:
- AGP 7.x 对应 Google Services 4.3.10+
- AGP 8.x 对应 Google Services 4.4.0+
修改根目录的build.gradle文件,确保版本匹配:
// 项目根目录 build.gradle buildscript { dependencies { // 你的AGP版本,比如7.4.2 classpath 'com.android.tools.build:gradle:7.4.2' // 对应版本的Google Services插件 classpath 'com.google.gms:google-services:4.3.15' } }
2. 确保Google Services插件是最后一个应用的
模块级build.gradle里,com.google.gms.google-services必须放在所有其他插件的最后,避免和其他插件的配置逻辑冲突:
// app模块的build.gradle apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' // 其他你用到的插件都放在上面 apply plugin: 'com.google.gms.google-services' // 最后一个应用
3. 清理Gradle缓存并重启
缓存损坏也可能导致这类异常,直接清理后重新同步:
- 打开Android Studio,点击顶部菜单栏
File->Invalidate Caches...,选择Invalidate and Restart - 或者在终端执行命令强制刷新依赖:
# macOS/Linux ./gradlew clean build --refresh-dependencies # Windows gradlew.bat clean build --refresh-dependencies
4. 排查自定义插件/脚本冲突
如果你的项目有自定义Gradle插件或者自定义脚本,可能在操作DomainObjectCollection时触发了无限递归。可以暂时禁用这些自定义逻辑,重新同步项目,如果错误消失,再逐步排查具体是哪部分代码导致的冲突。
错误原因补充
你看到的StackOverflowError是因为Gradle内部的DefaultDomainObjectCollection在isEmpty()和iterator()方法之间出现了无限递归调用,通常是Google Services插件和其他插件、或者Gradle版本不兼容,导致配置逻辑互相触发循环调用。
内容的提问来源于stack exchange,提问作者OÄD
相关产品推荐
相关产品推荐

