라떼군 이야기


Android Studio Ladybug 업데이트 후 Java 21과 Gradle 8.0 호환성 에러 해결 방법

Problem

Android Studio를 Ladybug 버전으로 업그레이드한 후, 기존 프로젝트를 싱크(Sync)할 때 “Your build is currently configured to use incompatible Java 21.0.3 and Gradle 8.0"이라는 에러 메시지가 발생합니다. 에러 로그에서는 Gradle 버전을 8.5 이상(권장 8.9)으로 업그레이드하라고 제안하지만, 프로젝트의 의존성이나 설정 문제로 인해 당장 Gradle 버전을 올리기 어려운 상황입니다. 이로 인해 프로젝트 빌드 및 동기화가 완전히 차단되는 문제가 발생합니다.

Background

Gradle 빌드 시스템은 JVM(Java Virtual Machine) 위에서 동작하며, 각 Gradle 버전마다 호환되는 Java 버전의 범위가 정해져 있습니다. Android Studio Ladybug는 기본적으로 Java 21을 내장하고 이를 사용하여 Gradle을 실행하려고 시도합니다. 하지만 Gradle 8.0 버전은 Java 19까지만 지원하도록 설계되어 있어, Java 21 환경에서는 실행될 수 없습니다. 즉, IDE의 기본 Java 버전이 프로젝트가 사용하는 Gradle 버전의 허용 범위를 초과했기 때문에 발생하는 호환성 충돌입니다.

Solution

Gradle 버전을 업그레이드하지 않고 이 문제를 해결하는 가장 확실한 방법은 Gradle이 사용하는 JDK 버전을 호환 가능한 버전(Java 17)으로 낮추는 것입니다. 일반적인 Android 프로젝트와 Flutter 프로젝트 각각에 대한 해결책을 소개합니다.

방법 1: Android Studio 설정 변경 (기본)

가장 간단한 방법은 IDE 설정에서 Gradle JDK를 Java 17로 변경하는 것입니다.

  1. Project Structure 열기: Android Studio 메뉴에서 File -> Project Structure...를 클릭합니다.
  2. SDK 설정 진입: 좌측 메뉴에서 SDK Location을 선택한 후 Gradle Settings를 찾습니다.
  3. JDK 다운로드 및 선택:
    • Gradle JDK 드롭다운 메뉴를 클릭합니다.
    • Download JDK를 선택합니다.
    • Version: 17
    • Vendor: JetBrains Runtime (JBR)을 선택하고 다운로드합니다.
    • 다운로드가 완료되면 해당 버전(Java 17)을 선택하고 OK를 눌러 적용합니다.
  4. 프로젝트 재동기화: File -> Sync Project with Gradle Files를 실행합니다.

주의: 설정 변경 후 module jdk.compiler does not export com.sun.tools.javac.main 같은 에러가 발생한다면, Android Studio를 완전히 종료했다가 다시 시작(Restart)해주세요.

방법 2: Flutter 프로젝트를 위한 CLI 설정

Flutter를 사용 중이라면 Android Studio 설정 외에도 Flutter 도구가 올바른 JDK를 인식하도록 설정해야 할 수 있습니다.

  1. JDK 경로 확인: 위 방법 1을 통해 다운로드한 JDK 17의 경로를 확인합니다. (Mac 예시: ~/Library/Java/JavaVirtualMachines/jbr-17.0.12/Contents/Home)
  2. Flutter 설정 명령어 실행:
# Flutter가 사용할 JDK 경로를 명시적으로 지정합니다.
# 경로 부분은 실제 JDK가 설치된 경로로 변경해주세요.
flutter config --jdk-dir ~/Library/Java/JavaVirtualMachines/jbr-17.0.12/Contents/Home
  1. 설정 확인:
# 설정이 올바르게 적용되었는지 확인합니다.
flutter doctor -v

예상 출력 결과:

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    ...
    • Java binary at: /Users/username/Library/Java/JavaVirtualMachines/jbr-17.0.12/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment JBR-17.0.12... 

위와 같이 Java version이 17로 잡혀있다면 정상적으로 빌드가 가능합니다.

Deep Dive

Java 17은 LTS(Long Term Support) 버전으로, 현재 Android 개발 생태계에서 가장 널리 쓰이는 안정적인 버전입니다. Gradle 7.3 버전부터 Java 17을 지원하므로, Gradle 8.0을 사용하는 환경에서 Java 17로의 다운그레이드는 매우 안전한 선택입니다. 다만, 이는 임시적인 해결책일 수 있습니다. 장기적으로는 Android Gradle Plugin(AGP)과 Gradle 버전을 최신으로 업데이트하여 빌드 속도 향상, 새로운 언어 기능 지원, 보안 패치의 이점을 누리는 것이 권장됩니다. 특히 Google Play의 타겟 API 요구사항이 변경될 때 빌드 도구 업데이트가 필수적이 될 수 있음을 유의해야 합니다.

Conclusion

Android Studio Ladybug의 기본 Java 21 설정과 구버전 Gradle 간의 충돌은 개발 환경 업데이트 시 흔히 겪을 수 있는 문제입니다. Gradle 버전을 올리는 것이 부담스럽다면, Gradle JDK 설정을 Java 17로 변경하는 것만으로도 문제를 빠르고 안전하게 해결할 수 있습니다. Flutter 개발자의 경우 flutter config 명령어를 통해 CLI 환경까지 맞춰주는 것을 잊지 마세요.

References

Open to collaboration (협업 문의) Get in touch (연락하기) →