본문 바로가기

Flutter 앱 빌드 때 만난 Unsupported class file major version 어쩌구 저쩌구 에러

기술적인 이야기/기타 개발 2024. 3. 15.
반응형

문제의 에러 스크린샷

오랜만에 Flutter 앱 프로젝트를 새로 빌드할 일이 생겨서 빌드 명령을 입력했는데 전에 보지 못하던 에러가 발생했다. 아래와 같은 오류다.

* What went wrong:
Could not open settings generic class cache for settings file '/Users/seorenn/developments/myproject/android/settings.gradle' (/Users/seorenn/.gradle/caches/7.2/scripts/foobarsomeidentifier).
> BUG! exception in phase 'semantic analysis' in source unit '_BuildScript_' Unsupported class file major version 65

코드도 수정한 적이 없고 프로젝트 설정을 수정한 적도 없고 빌드 환경에서 뭔가를 바꾼 적도 없는데 도대체 뭘까.

하여간 이 오류로 구글링을 해봤고 몇몇 조치 방법을 알 수 있었다. 예를 들어 Gradle 버전을 맞추거나 JDK 버전을 맞추거나 몇 가지 Gradle Build Properties 설정을 고치거나 등등 말이다. 댓글들을 보면 해결이 되기는 하는 것 같았다.

그런데 문제는 개인적으론 해결이 안 되었다는 점이다. 뭔가 빌드 환경이 멋대로 바뀌기라도 한 것일까?

다른 해결책

며칠을 이 문제로 끙끙거리다 의외의 것에서 문제를 발견했다. 어느 날 우연히 입력한 flutter doctor 명령에서 아래와 같은 식의 결과를 얻었다.

$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.3.9, on macOS 14.4 23E214 darwin-x64, locale ko-KR)
[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
[✓] Chrome - develop for the web
[!] Android Studio (version 2022.2)
    ✗ Unable to find bundled Java version.
[✓] VS Code (version 1.86.2)
[✓] Connected device (3 available)
    ! Error: Browsing on the local area network for iPhone. Ensure the device is unlocked and attached with a cable or associated with the same local area network as this Mac.
      The device must be opted into Developer Mode to connect wirelessly. (code -27)
[✓] HTTP Host Availability

! Doctor found issues in 1 category.

디바이스 연결 안 되어 있다는 에러는 무시하자. 어쨌든 핵심은 Android Studio 체크 항목에서 ‘Unable to find bundled Java version.’이라는 메시지가 보인다는 점이다.

당연히 안드로이드 용으로 빌드하려면 자바가 필수인데 번들된 자바가 없다니 크리티컬 한 에러다. 이게 원인이라 직감하고 관련된 자료를 또 찾아봤다.

몇 가지 소개가 있었지만 다 비슷했는데 Flutter가 참고하는 JRE 경로에 필요한 파일들이 있어야 한다. 다만 현재의 문제점은 이미 파일은 존재하지만 디렉터리 이름이 다르다는 점이다. 이럴 때는 BSD 답게 간단히 심볼릭 링크로 해결할 수 있다.

cd /Applications/Android Studio.app/Contents
ln -s jbr jre

이후 빌드를 해보니 잘 되었다.

참고로 Gradle 버전을 높여놓은 상태라 이것도 문제 해결에 같이 도움이 되었을 가능성이 있다. 하지만 이걸 다시 돌려놓고 테스트하는 스트레스받는 일은 그다지 하고 싶지 않아서 확인해 보지는 않았다는 점을 참고하자.

그나저나 어쩌다 잘 돌아가던 환경이 저렇게 망가졌나 의문이다. 최근에는 Android Studio를 업그레이드한 적도 없는데 말이다.

728x90
반응형

댓글