[Flutter] Gradle version is incompatible with the Java version that Flutter is using for Gradle 이슈 대응
문제 분석
Android Studio를 업데이트하고 나서 기존 프로젝트가 빌드되지 않는 이슈가 발생했다. 에러 로그는 다음과 같았다.
[!] Your project's Gradle version is incompatible with the Java version that Flutter is using for Gradle.
To fix this issue, first, check the Java version used by Flutter by running `flutter doctor --verbose`.
Exception: Gradle task assembleDebug failed with exit code 1
안드로이드 빌드를 관리하는 Gradle와 현재 사용하는 자바의 버전이 맞지않다고 한다. 현재 맥북에서 사용 중이던 자바는 17버전이다.
프로젝트에서 사용하던 Gradle의 버전은 android/gradle/wrapper/
gradle-wrapper.properties
파일을 통해 확인할 수 있다.
gradle-wrapper.prperties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl을 보면 7.6.3 버전을 이용 중이라는 걸 확인할 수 있다. 이는 현재 맥북에서 사용 중인 Java 17 버전과 호환되는 버전이었다. 아무래도 안드로이드 스튜디오 업데이트를 하면서 Flutter에서 사용하는 Java의 버전이 달라진 것 같다.
더 자세한 분석을 위해서 analyze를 활용했다.
flutter analyze --suggestions
따로 사진을 찍어두지 못했지만, 이를 통해서 현재 프로젝트에서 빌드 시 사용하는 Java가 17버전이 아닌 21버전임을 알게 됐다.
문제 해결
flutter에서 활용할 jdk를 변경하려면 다음의 커맨드를 활용하면 된다.
flutter config --jdk-dir <path_to_jdk>
flutter doctor -v
를 통해 설정이 잘 되었는지 확인할 수 있다.
flutter 관련 에러가 발생하면 보통 doctor부터 해보는 편이긴 하다.
문제가 없다면 다음과 같이 모두 체크 박스가 채워진다.
결론
Gradle과 android에 대한 지식이 부족해서 꽤나 헤매게 됐었다. Flutter가 처음 진입 장벽은 낮은 편이지만, 결국엔 여러 플랫폼에 대한 이해도가 필요하다는 생각을 했다.
단순히 Dart 코드만 잘 짜는 건 기본으로 가져야할 소양이며, 여러 플랫폼에 대한 공부도 놓지 않아야겠다.