티스토리 뷰

최근 회사에서 새로운 맥북을 주셔서

인텔맥 -> M4 프로로 개발 환경을 바꿨다.

 

바꾸면서 homebrew 로 이것저것 설치하고 개발했더니

안드로이드 스튜디오 내부 JDK가 자동으로 21로 되어있었다.

 

`flutter build appbundle`로 안드로이드 앱 배포를 시도하니까

이런 오류가 떴다.

 

사실 이전에도 같은 오류를 겪어서 겨우겨우 해결했었는데...

그때는 떡하지 적혀있는 AGP가 뭔지도 몰랐다...

 

일단 번역기를 돌려보자

에.. 그니까 Java는 최신버전 21 쓰면서 gradle 은 왜 낮은거 8.2.1 쓰냐는 .. 뭐 그런 오류다.

근데 ㅠ 그거 아세요..? gradle 최신버전이랑 자바 21이랑도 호환 안되는거..

어떻게 알았냐고요? 저도 알고싶지 않았어요...

 

`flutter doctor --verbose` 를 입력하면 프로젝트에서 사용하고 있는 Java 버전을 볼수가 있는데

[✓] Android Studio (version 2024.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 21.0.3+-79915917-b509.11)

 

 

 

https://docs.gradle.org/current/userguide/compatibility.html

 

Compatibility Matrix

Gradle runs on the Java Virtual Machine (JVM), which is often provided by either a JDK or JRE. A JVM version between 8 and 23 is required to execute Gradle. JVM 24 and later versions are not yet supported. Executing the Gradle daemon with JVM 16 or earlier

docs.gradle.org

여기 가면 Java 버전이랑 Gradle 버전 호환성 관련한 표를 볼 수 있는데

 

글쓴일 기준 Gradle LTS = 8.12 인데

Java21 은 Gradle 8.5랑 호환되죠?? 에 안됩니다.. 무조건 최신버전이 좋은게 아니다..!

하지만? 우리 프로젝트는 Java17 기준으로 코드가 작성되어있기 때문때문에

Java21을 그대로 사용하는걸로 한다? 물론 해도 되지만 고칠 코드가 많아집니다...

 

그래서 난 Java17 쓰기로 결정

이건 아마 homebrew 로 설치했던거같아요

 

 

 

 

Android Studio > File > Project Structure

 

그럼 이렇게 SDK 가 설정안된채로 뜰겁니다!!!

물론 아닐수도 있습니다......... 거기까진 몰?루..

 

 

 

근데도?? 아직도 이렇게 나온다..

[✓] Android Studio (version 2024.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 21.0.3+-79915917-b509.11)

 

그럼 또 뭘해야되나?

Settings > Build, Execution, Development > Build Tools > Gradle

Gradle user home 경로를 이런식으로 입력해줍니다..

 

그리고 마지막으로!!!!!!!!!

프로젝트경로/android/app/build.gradle

 

싹다 17로 바꿔버리기 ..!!!!

 

 

여기도 jdk 경로로 입력해주면 된다.

 

근데 여전히 여기는 21로 뜨긴하는데 ;;

근데 `flutter build appbundle`하면 Java21버전 때문에 오류 났던건 사라지고 빌드가 가능하다..

나 진짜 내가 할수있는건 다했는데도 이건 왜 아직도 저걸로 뜨는건지 진짜 모르겠음 ... ;;

일단 appbuild 는 성공했으니.. jdk17 경로로 설정은 완료된듯함..ㅠㅠ

만약 저 지긋지긋한 OpenJDK Environment 설정 바뀌는걸 확실하게 확인한다면 다시 글을 수정하도록 하겠습니다....

 

참고

 

[Java][Flutter] Gradle과 JDK 버전 확인 및 변경 방법

How to check and change Gradle and JDK versionsGradle과 JDK 버전 확인 및 변경 방법[Java][Flutter]  Gradle과 JDK는 Android 애플리케이션을 빌드하는 데 필수적인 요소입니다.이들 간의 호환성은 프로젝트의

studiodoc.tistory.com

 

 

Java 17 설치(Mac)

https://techblog.gccompany.co.kr/%EC%9A%B0%EB%A6%AC%ED%8C%80%EC%9D%B4-jdk-17%EC%9D%84-%EB%8F%84%EC%9E%85%ED%95%9C-%EC%9D%B4%EC%9C%A0-ced2b754cd7 우리팀이 JDK 17을 도입한 이유 안녕하세요, T플랫폼개발실 개발3팀 제이든입니다. 이

vkein.tistory.com

 

 

JDK와 Gradle 버전 호환성 문제

..jdk17버전을 사용중에, gradle 7.5 버전으로 다운로드 받아서 문제가 생긴 것 같다. 확인해보니 JDK 17의 경우 gradle 7.3버전부터 지원한다고 하는 것 같다.JDK17버전과 호환되는 gradle 7.3버전을 새로 다

velog.io

 

 

JDK 21과 Gradle 호환성 에러: 원인 분석과 실질적 해결 방안

문제 상황 최근 Oracle OpenJDK 21을 사용하여 프로젝트를 구축하던 중, 예상치 못한 에러가 발생했습니다. 아래는 해당 에러의 스크린샷입니다. Unsupported class file major version 알고 가는 기본 개념 1. Gr

xpmxf4.tistory.com