升级com.google.gms:google-services:3.2.0后Android Studio构建因StackOverflowError失败
嘿,我之前也踩过这个坑!当把com.google.gms:google-services从3.1.1升级到3.2.0时,确实会触发这个StackOverflowError,本质是插件版本和项目的Gradle环境不兼容,导致了循环调用的问题。下面是几个亲测有效的解决办法:
1. 匹配Android Gradle Plugin(AGP)版本
google-services插件和AGP版本有严格的兼容性要求:
- google-services 3.2.0 需要搭配 AGP 3.0.0 及以上版本(但别用太新的AGP,比如4.x+可能也会有适配问题)
- 打开项目根目录的
build.gradle,检查并调整com.android.tools.build:gradle的版本:buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.0.1' // 确保版本和google-services匹配 classpath 'com.google.gms:google-services:3.2.0' } }
2. 彻底清理缓存并重构
缓存残留经常会引发这类奇怪的构建错误,执行以下命令清理:
- 对于Mac/Linux:
./gradlew clean build --refresh-dependencies - 对于Windows:
gradlew.bat clean build --refresh-dependencies
执行完后重启Android Studio,再尝试构建。
3. 统一Firebase依赖版本
如果项目中使用了Firebase相关依赖,要确保所有Firebase库的版本和google-services插件版本匹配。比如:
dependencies { implementation 'com.google.firebase:firebase-auth:11.8.0' // 该版本与google-services 3.2.0对应 implementation 'com.google.firebase:firebase-database:11.8.0' }
注意:google-services 3.2.0对应的Firebase版本是11.8.0左右,不要混用不同版本的Firebase库。
4. 调整google-services插件版本
如果上面的方法都无效,可以尝试:
- 暂时降级回
com.google.gms:google-services:3.1.1,确保项目能正常构建 - 或者升级到更高版本的插件,比如
3.3.0,这个版本修复了不少3.2.0的兼容性问题
你遇到的错误信息:
Caused by: java.lang.StackOverflowError at org.gradle.api.internal.DefaultDomainObjectCollection.isEmpty(DefaultDomainObjectCollection.java:246) at org.gradle.api.internal.CompositeDomainObjectSet$DomainObjectCompositeCollection.isEmpty(CompositeDomainObjectSet.java:172) at org.gradle.api.internal.CompositeD...
内容的提问来源于stack exchange,提问作者lilienberg

