2025. 1. 1. 14:06ㆍProject 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을 하면 이제 안드로이드 에뮬레이터에서 정상 실행된다.