유데미 플러터 강의를 들으면서 프로젝트를 깃 클론해서 로컬로 가져오는 경우가 많았는데, 프로젝트가 예전 버전에서 제작된거라 내 컴퓨터 로컬 환경과 맞지 않아 에러가 자주났다. 최근 들어 정말 다양한 에러와 마주치고 있는데 오늘은 아래와 같은 에러가 났다.
BUG! exception in phase 'semantic analysis' in source unit '_BuildScript_' Unsupported class file major version 61
찾아보니 이 에러는 현재 Gradle 버전과 Java 버전이 일치하지 않을 때 발생하는 오류로 나의 JDK 버전을 확인하고 거기에 맞는 Gradle 버전으로 변경해야 한다.
1. JDK 버전 확인하기
터미널 창을 켜고 java --version 명령어를 치면 확인할 수 있는데, 확인해보니 나의 java 버전이 18 인 것을 알 수 있었다.
2. Gradle 버전 확인하기
- android/gradle/wrapper/gradle-wrapper.properties 에 들어가서 distributionalPath 를 확인하면 된다
현재 나의 Gradle 버전은 7.0.2 인 것을 알 수 있다.
3. JDK 버전에 맞는 Gradle 버전 확인하기
나의 경우 java 버전이 18이니 Gradle 버전이 7.5 이어야 했는데, 7.0.2 로 되어있었기 때문에 에러가 난 것이다.
4. Gradle 버전 바꿔주기
distributionUrl=https\://services.gradle.org/distributions/gradle-[Gradle 버전]-all.zip
맞는 Gradle 버전을 넣어서 바꿔주면 된다.
Gradle 버전은 고쳐진 것 같은데, 나는 여기서 또 에러가 났다.
Execution failed for task ':app:checkDebugAarMetadata'.
> A failure occurred while executing cohttp://m.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
> One or more issues found when checking AAR metadata values:
The minCompileSdk (31) specified in a
dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module's compileSdkVersion (android-29).
Dependency: androidx.window:window-java:1.0.0-beta04.
AAR metadata file: C:\Users\buij3\.gradle\caches\transforms-3\8a087eca7f1c3ab5ae9e2b1b03878143\transformed\jetified-window-java-1.0.0-beta04\META-INF\com\android\build\gradle\aar-metadata.properties.
The minCompileSdk (31) specified in a
dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module's compileSdkVersion (android-29).
Dependency: androidx.window:window:1.0.0-beta04.
AAR metadata file: C:\Users\buij3\.gradle\caches\transforms-3\dded0c0dc16116d76fc6112cb7bf9f94\transformed\jetified-window-1.0.0-beta04\META-INF\com\android\build\gradle\aar-metadata.properties.
읽어보니 compileSdkVersion 문제로 compileSdkVersion 이 최소 31 은 되어야 한다는 것 같아서 고쳐주었다.
android/app/build.gradle 로 들어가서 android 부분을 고쳐주면 된다. 29 로 되어있던 compileSdkVersion 을 33 로 고쳐주었더니 에러가 해결되었다. (원래 쓰던 compileSdkVersion 이 33 이라 31이 아닌 33 으로 고쳐주었다. )
오늘의 에러 일기도 -끝- (❁´◡`❁)
📖 References 📖
Why am I getting this warning and how to resolve it "This version only understands SDK XML versions up to 2 but an SDK XML..."
I have just updated my current android application to use java 11, build tools 32.0.0 and heres the android studio details im using Android Studio Bumblebee | 2021.1.1 Beta 5 Build #AI-211.7628.21....
stackoverflow.com
https://docs.gradle.org/current/userguide/compatibility.html
Compatibility Matrix
The sections below describe Gradle’s compatibility with several integrations. Versions not listed here may or may not work.
docs.gradle.org