Flutter Android 빌드 시 JDK 호환성 문제 해결하기

길위에 히피·2024년 12월 5일
0

Flutter

목록 보기
41/44

문제 상황

Flutter 프로젝트의 Android 빌드 중 다음과 같은 에러가 발생했습니다:

> Task :flutter_image_compress_common:compileDebugJavaWithJavac FAILED
Transforming core-for-system-modules.jar with JdkImageTransform
Caching disabled for JdkImageTransform: .../core-for-system-modules.jar
Error: unknown target platform android

이 에러는 주로 시스템에 설치된 JDK 버전이 Android 빌드 도구와 호환되지 않을 때 발생합니다. JDK 22와 같이 최신 버전을 사용할 때 자주 발생하는 문제라고 하네요.

원인 분석

이 문제가 발생하는 주된 원인은:

일반적으로 이런 문제가 있으면 라이브러리를 업데이트하거나, 자바를 수정하라고 많이한다. 이렇게해서 문제가 해결되는 경우가 많지만 내 경우에는 시스템에 설치된 여러 JDK가 혼선을 일으켰고, Gradle이 시스템의 기본 JDK를 사용하려고 시도하면서 발생하는 충돌이었다.

해결 방법

이 문제는 프로젝트의 gradle.properties 파일에서 특정 JDK 버전을 명시적으로 지정하여 해결할 수 있습니다.

  1. 먼저 JDK가 이 시스템에 설치되어 있는지 경로를 확인합니다.

  2. android/gradle.properties 파일을 열고 다음 설정을 추가합니다:

    org.gradle.java.home=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home

왜 이 방법이 효과적이었을까?

이 설정이 효과적인 이유는 다음과 같습니다:

명시적 경로 지정: Gradle이 사용할 JDK의 경로를 직접 지정함으로써 시스템 환경변수나 PATH 설정에 관계없이 항상 올바른 JDK를 사용하게 됩니다.
버전 호환성 보장: JDK 17은 현재 Android 개발에 권장되는 버전으로, 빌드 도구들과 완벽한 호환성을 보장합니다.
프로젝트 레벨 설정: 이 설정은 프로젝트에 특화된 것으로, 다른 프로젝트나 시스템 설정에 영향을 주지 않습니다.

참고사항

JDK 경로는 시스템마다 다를 수 있으므로, 실제 설치된 경로를 확인하고 설정해야 합니다.
Mac에서 설치된 JDK 경로는 일반적으로 /Library/Java/JavaVirtualMachines/ 디렉토리에서 확인할 수 있습니다.
이 설정은 팀원들과 공유되는 설정이므로, 문서화하여 모든 팀원이 동일한 JDK 버전을 사용하도록 하는 것이 좋습니다.

결론
JDK 버전 호환성 문제는 Android 개발에서 자주 발생하는 이슈 중 하나입니다. gradle.properties에 JDK 경로를 명시적으로 지정하는 방법은 간단하면서도 효과적인 해결책이 될 수 있습니다. 특히 최신 버전의 JDK를 사용하는 환경에서 발생하는 문제를 해결하는데 유용합니다.

profile
마음맘은 히피인 일꾼러

0개의 댓글