Flutter集成google_sign_in遇:google_sign_in_android:compileDebugJavaWithJavac构建错误
解决Flutter集成google_sign_in时的JdkImageTransform构建错误
可行解决方案
1. 强制Gradle使用Android Studio内置JBR
在项目的android/gradle.properties文件末尾添加以下配置(注意Windows路径需用双反斜杠):
org.gradle.java.home=C:\\Program Files\\Android\\Android Studio\\jbr
也可通过Android Studio图形界面设置:
- 打开
File > Settings > Build, Execution, Deployment > Build Tools > Gradle - 在
Gradle JDK下拉菜单中选择Android Studio自带的JBR版本(通常为17或21,与你的Android Studio版本匹配)
2. 降级Java到兼容LTS版本(如Java 17)
确保Flutter和Gradle都指向Java 17:
- 修改系统环境变量
JAVA_HOME为Java 17的安装目录 - 执行
flutter doctor -v检查输出中的Java路径是否正确 - 依次执行
flutter clean、flutter pub get后重新构建
3. 针对google_sign_in_android模块调整编译配置
在项目的android/build.gradle文件中添加子项目配置:
subprojects { if (name == 'google_sign_in_android') { tasks.withType(JavaCompile) { options.fork = true options.forkOptions.jvmArgs += ['--add-modules', 'java.base'] } } }
4. 清理Gradle缓存
- 删除本地Gradle缓存目录:
C:\Users\User\.gradle\caches - 执行
flutter clean清理Flutter项目缓存 - 重新执行
flutter pub get后尝试构建
问题原因
Java 22属于较新的非LTS版本,与Gradle的JdkImageTransform插件兼容性存在问题,处理android-34的core-for-system-modules.jar时,jlink命令的参数无法正常执行。Android Studio内置的JBR(JetBrains Runtime)是经过适配优化的版本,能更好兼容Android构建流程。
内容的提问来源于stack exchange,提问作者AlexStavok
相关产品推荐
相关产品推荐

