[Flutter 에러 해결] Android Gradle Plugin (AGP) versions less than 8.2.1: AGP/Gradle/Jdk

2025. 1. 1. 14:06Project Log/학부 졸업프로젝트

AGP 버전 에러

flutter_sound 패키지를 사용하려는데, iOS 에뮬레이터에서는 flutter run이 잘 되는데 Android 에뮬레이터에서는 아래 에러가 나왔다. AGP 버전, gradle 버전, jdk 버전 3개가 다 같이 난리가 나서 나온 에러라고 볼 수 있다.

 

공식 문서와 스택 오버플로우를 한참 찾아보고 시도한 후에 해결할 수 있었다.. 설정 파일도 여러 개 수정해야 하고 플러터 프로젝트에 jdk 버전 적용도 해야해서 조금 복잡했다. 

에러 해결을 위한 단계

1. android/app/build.gradle 파일 수정

맨 위에 아래 코드를 추가한다.

buildscript {
    dependencies {
        // AGP 버전 업데이트
        classpath 'com.android.tools.build:gradle:8.2.1'
    }
}

 

기존에 있던 설정 중에 compileOptions와 kotlinOptions에 있던 자바 버전을 17로 바꿔주고, minSdkVersion은 24로 명시한다.

android {
    compileOptions {
        // sourceCompatibility = JavaVersion.VERSION_1_8
        // targetCompatibility = JavaVersion.VERSION_1_8
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    kotlinOptions {
        // jvmTarget = JavaVersion.VERSION_1_8
        jvmTarget = JavaVersion.VERSION_17
    }

    defaultConfig {
        minSdkVersion 24 
        // minSdk = flutter.minSdkVersion
    }

 

android/gradle/wrapper/gradle-wrapper.properties의 gradle 버전을 8.5로 수정한다.

distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip

 

jdk 17을 다운로드하고, 플러터 기본 jdk 버전 설정을 적용한다.

에러 메시지에서 참고하라고 준 링크에 jdk와 gradle 버전 호환 표가 있었다.

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

gradle 8.5에 분명히 jdk 21이라고 되어있는데, 이상하게도 gradle 8.5에 jdk 17을 써야 에러가 해결된다. 

 

주의할 점은 flutter config 커맨드로 플러터 프로젝트의 jdk 버전을 꼭 바꿔줘야 한다. .zshrc 파일만 바꾸는 것으로는 안 된다. 

// jdk 버전 17 설치
brew install openjdk@17

// .zshrc 파일 편집기
vi ~/.zshrc

// .zshrc 파일에 jdk 경로 추가
export JAVA_HOME="/opt/homebrew/opt/openjdk@21"
export PATH=$JAVA_HOME/bin:$PATH

// .zshrc 실행
source ~/.zshrc

// flutter jdk 경로로 jdk 17 파일 경로 설정
flutter config --jdk-dir /opt/homebrew/opt/openjdk@17

 

플러터 프로젝트 버전 호환 체크

아래 커맨드를 통해 jdk와 gradle 버전 호환 여부를 확인할 수 있다. 위의 과정을 거치면 Java/Gradle/Android Gradle Plugin에 있던 X 표시가 체크 표시로 바뀐다.

flutter analyze --suggestions

 

flutter run을 하면 이제 안드로이드 에뮬레이터에서 정상 실행된다.