개요
IOS 빌드에 성공한 프로젝트를 안드로이드 빌드하였을 떄 에러가 출력되며 빌드에 실패했습니다. 이는 gradle이 지원하지 않는 jdk 버전을 사용하여 발생하는 문제입니다.
FAILURE: Build failed with an exception.
* Where:
Settings file '/Users/taegyeonglee/Documents/GitHub/Checked/android/settings.gradle'
* What went wrong:
Could not compile settings file '/Users/taegyeonglee/Documents/GitHub/Checked/android/settings.gradle'.
> startup failed:
General error during conversion: Unsupported class file major version 62
...
문제 분석
# gradle java 지원 버전 확인
gradle 공식 문서에서 gradle이 지원하는 java 버전을 확인합니다.
각 자바 버전을 지원하는 gradle 버전을 확인할 수 있습니다. java18은 아직 지원되지 않네요. 제 gralde 버전과 java 버전을 확인해보겠습니다.
# gradle 버전 확인
gradle 버전을 확인하기 위해선 프로젝트/android/gradle/wrapper/gradle-wrapper.properties
내 distributionUrl
항목을 확인합니다.
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
제 gradle 버전이 7.2임을 확인할 수 있습니다.
# java 버전 확인
터미널에 java --version
을 입력해 로컬 환경에 설치, 적용된 자바 버전을 확인합니다.
(base) taegyeonglee@Taegyeongui-MacBookAir Checked % java --version
java 18.0.1.1 2022-04-22
Java(TM) SE Runtime Environment (build 18.0.1.1+2-6)
Java HotSpot(TM) 64-Bit Server VM (build 18.0.1.1+2-6, mixed mode, sharing)
java18의 클래스 파일 버전이 62임을 고려했을 때 해당 오류는 java18과 gradle 의 호환문제임을 유추할 수 있습니다.
제 로컬 환경 gradle이 지원하지 않는 java18이 설치되어 있음을 확인했습니다. 현재 제 gradle 버전이 7.2이므로 이에 맞는 가장 최신(latest) java버전은 java16이군요.
java18을 삭제하고 java16 이전 LTS 버전인 java11을 재설치 하여 문제를 해결해 보겠습니다.
java16으로 재설치를 해보았으나 호환성 문제로 발생하는 빌드 오류가 발생했습니다. 따라서 java16이 아닌 LTS 버전인 java11로 설치합니다.
문제 조치
# java11 다운로드
java11을 공식 다운로드 페이지에서 다운로드 하여 설치합니다.
# java11 설치 확인
/usr/libexec/java_home -V
명령어를 통해 java11이 정상적으로 로컬에 설치되었는지 확인합니다.
(base) taegyeonglee@Taegyeongui-MacBookAir Checked % /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
18.0.1.1 (arm64) "Oracle Corporation" - "Java SE 18.0.1.1" /Library/Java/JavaVirtualMachines/jdk-18.0.1.1.jdk/Contents/Home
11.0.15 (x86_64) "Oracle Corporation" - "Java SE 11.0.15" /Library/Java/JavaVirtualMachines/jdk-11.0.15.jdk/Contents/Home
11.0.11 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 11" /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-18.0.1.1.jdk/Contents/Home
# java18 제거
java18을 제거합니다.
cd /Library/Java/JavaVirtualMachines
(base) taegyeonglee@Taegyeongui-MacBookAir JavaVirtualMachines % ls
adoptopenjdk-11.jdk jdk-11.0.15.jdk jdk-18.0.1.1.jdk
sudo rm -rf jdk-18.0.1.1.jdk
# java 적용 버전 확인
java --version
을 통해 로컬 자바 버전이 갱신되었는지 확인합니다.
(base) taegyeonglee@Taegyeongui-MacBookAir JavaVirtualMachines % java --version
java 11.0.15 2022-04-19 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.15+8-LTS-149)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.15+8-LTS-149, mixed mode)
# projet SDK 변경
해당 프로젝트를 안드로이드 스튜디오로 열어 file > project structure > project > project SDK를 11으로 변경 후 적용합니다.
# 빌드 확인
해당 오류가 해결되었음을 확인할 수 있습니다.
결론 : 답변
해당 이슈에 대해 조치 방법을 답변했습니다.
참고 링크
'프로그래밍 > React-Native <JSX>' 카테고리의 다른 글
[React-Native] react-native-webview 안드로이드 플랫폼에서 웹뷰를 출력하지 않는 문제 (0) | 2023.02.12 |
---|---|
[React-Native] react-native-google-singin 앱 심사에 통과하기 위한 앱 서명 인증서(SHA-1) 키 적용하기 (0) | 2023.02.12 |
[Appstore Connect] 앱 스크린샷 업로드 오류를 Curl API를 통해 우회적으로 해결하기 (0) | 2023.02.12 |
[React-Native] 개발할 때 알면 좋은 팁 (0) | 2023.02.12 |
[React-Native] 안드로이드 커스텀 폰트 출력 문제 IncludeFontPadding 해결하기 (2) | 2023.02.12 |