
안드로이드 스튜디오를 레이디버그 피쳐 드롭으로 업데이트한 이후에 갑자기 이런 오류가 발생했다.
관련해서 국내 개발자들의 정보는 아예 없었고, 같은 증상이 발생한 외국인들의 토론 글이 있었지만 유용한 해결책은 찾을 수 없었다.
다행히도 매번 invalidate cache하면 일시적으로 발생하지 않아서 그걸 반복하며 사이드 프로젝트를 개발하고 있었다.
그러다 이제는 이 비효율적인 프로세스를 먼저 해결하고 개발을 이어나가고자 여러 설정을 확인해봤는데,
(1) compileSdk 버전도 변경하지 않았고
(2) 현재 사용중인 버전의 AGP와 JDK의 조합은 문제 없이 잘 사용해오던 조합이였고
(3) invalidate cache, build clean 등
모든 방법을 다 해봤지만 일시적일 뿐, 완벽하게 해결되지 않았다. 그래서 오류 메시지를 뜯어보다가 JdkImageTransform과 jlink에 대한 정보를 조사했다.
🎈 Jlink
Jlink는 Java 9 이후에 도입된 응용 프로그램 맞춤형 JRE를 생성하는 툴로, 실행 환경을 최적화하는 역할을 한다고 한다.
Java 9 이후에 도입된 개념이라고 하는데, 안드로이드에는 생각보다 뒤늦게 적용된 것 같다.
안드로이드에서는 AGP 버전 8.0 이상에서 API 33 이상을 빌드할 때 jlink가 실행되기 때문이다.
(1) Jlink와 core-for-system-modules.jar
core-for-system-modules.jar은 API 33부터 도입된 system module 파일이다.
빌드 시에 JRE를 생성하기 위해 jlink가 실행될 때, core-for-system-modules.jar 파일의 모듈들 중 일부를 포함하는 경량 JDK 런타임 이미지를 생성하는데,
이 과정을 JdkImageTransform이라고 한다.(이래서 오류 메시지에 JdkImageTransform failed라고 적혀있었구나)
위 내용에 따라 core-for-system-modules.jar 파일의 구성이 변경되었거나 누락되어 발생한 문제일 수 있겠다는 결론을 내렸다.
core-for-system-modules.jar 파일이 Android SDK의 플랫폼 디렉토리에 위치하고 있으며, API 33부터 도입되었기 때문에 SDK 설치 상태나 Java 버전에 문제가 있을 것이라고 생각했다.
(위치는 오류 로그에 나와 있다. Android\Sdk\platforms\android-34\core-for-system.modules.jar)
(2) 트러블슈팅
찾아보니 API 33은 업데이트 가능 상태였고 API 34가 Partially installed(부분적으로 설치됨) 상태였다.
그래서 API 34를 완전히 설치했다.

더 찾아보니 Java21을 사용해서 발생하는 문제라는 얘기가 있었으나, 기존에 난 jdk17을 사용하도록 설정해놔서 그 부분의 문제일 것이라고는 생각해보지 않았다.
근데! 다시 확인해 보니, 안드로이드 스튜디오를 업데이트하면서 jbr-21을 사용하도록 설정이 자동으로 바뀌어 있었다;
그래서 이 부분을 다시 jdk17을 사용하도록 수정했다.(Settings -> Build,Execution,Deployment -> Build Tools -> Gradle)

한 가지 추가적인 의문은, Java 버전 문제였는데도 왜 항상 발생하지 않고 간헐적으로 발생했냐는 점이다.(Compose 프리뷰 렌더링 시에만 발생했다).. Preview 동작 과정을 뜯어봐야겠다
안드로이드 스튜디오의 알려진 문제들 - Compose 미리보기 렌더링 중 오류 발생
나도 오늘 포스팅한 이 오류가 Compose 미리보기 렌더링 시에 간헐적으로 발생해서 읽어봤는데 없었다..
처음보는 오류 3가지만 적혀있었다. 항상 개발보다 환경설정이 더 어려운 것 같다ㅎ;
Android 스튜디오 및 Android Gradle 플러그인의 알려진 문제 | Android Studio | Android Developers
Android 스튜디오 및 Android Gradle 플러그인의 현재 알려진 문제에 관해 알아보세요.
developer.android.com
'개발 > 트러블슈팅' 카테고리의 다른 글
[안드로이드] 채팅 기능 메시지 그룹화 로직 개선 (0) | 2024.11.19 |
---|---|
[안드로이드] 릴리즈 빌드 시 난독화 설정 문제(카카오, 네이버 소셜 로그인) (1) | 2024.11.18 |
[안드로이드] 안드로이드 스튜디오 PluginException (0) | 2023.11.10 |
[안드로이드] Jetpack compose dependency 설정 (0) | 2023.07.11 |
[안드로이드] FragmentContainerView NullPointerException 해결 (0) | 2023.05.27 |

안드로이드 스튜디오를 레이디버그 피쳐 드롭으로 업데이트한 이후에 갑자기 이런 오류가 발생했다.
관련해서 국내 개발자들의 정보는 아예 없었고, 같은 증상이 발생한 외국인들의 토론 글이 있었지만 유용한 해결책은 찾을 수 없었다.
다행히도 매번 invalidate cache하면 일시적으로 발생하지 않아서 그걸 반복하며 사이드 프로젝트를 개발하고 있었다.
그러다 이제는 이 비효율적인 프로세스를 먼저 해결하고 개발을 이어나가고자 여러 설정을 확인해봤는데,
(1) compileSdk 버전도 변경하지 않았고
(2) 현재 사용중인 버전의 AGP와 JDK의 조합은 문제 없이 잘 사용해오던 조합이였고
(3) invalidate cache, build clean 등
모든 방법을 다 해봤지만 일시적일 뿐, 완벽하게 해결되지 않았다. 그래서 오류 메시지를 뜯어보다가 JdkImageTransform과 jlink에 대한 정보를 조사했다.
🎈 Jlink
Jlink는 Java 9 이후에 도입된 응용 프로그램 맞춤형 JRE를 생성하는 툴로, 실행 환경을 최적화하는 역할을 한다고 한다.
Java 9 이후에 도입된 개념이라고 하는데, 안드로이드에는 생각보다 뒤늦게 적용된 것 같다.
안드로이드에서는 AGP 버전 8.0 이상에서 API 33 이상을 빌드할 때 jlink가 실행되기 때문이다.
(1) Jlink와 core-for-system-modules.jar
core-for-system-modules.jar은 API 33부터 도입된 system module 파일이다.
빌드 시에 JRE를 생성하기 위해 jlink가 실행될 때, core-for-system-modules.jar 파일의 모듈들 중 일부를 포함하는 경량 JDK 런타임 이미지를 생성하는데,
이 과정을 JdkImageTransform이라고 한다.(이래서 오류 메시지에 JdkImageTransform failed라고 적혀있었구나)
위 내용에 따라 core-for-system-modules.jar 파일의 구성이 변경되었거나 누락되어 발생한 문제일 수 있겠다는 결론을 내렸다.
core-for-system-modules.jar 파일이 Android SDK의 플랫폼 디렉토리에 위치하고 있으며, API 33부터 도입되었기 때문에 SDK 설치 상태나 Java 버전에 문제가 있을 것이라고 생각했다.
(위치는 오류 로그에 나와 있다. Android\Sdk\platforms\android-34\core-for-system.modules.jar)
(2) 트러블슈팅
찾아보니 API 33은 업데이트 가능 상태였고 API 34가 Partially installed(부분적으로 설치됨) 상태였다.
그래서 API 34를 완전히 설치했다.

더 찾아보니 Java21을 사용해서 발생하는 문제라는 얘기가 있었으나, 기존에 난 jdk17을 사용하도록 설정해놔서 그 부분의 문제일 것이라고는 생각해보지 않았다.
근데! 다시 확인해 보니, 안드로이드 스튜디오를 업데이트하면서 jbr-21을 사용하도록 설정이 자동으로 바뀌어 있었다;
그래서 이 부분을 다시 jdk17을 사용하도록 수정했다.(Settings -> Build,Execution,Deployment -> Build Tools -> Gradle)

한 가지 추가적인 의문은, Java 버전 문제였는데도 왜 항상 발생하지 않고 간헐적으로 발생했냐는 점이다.(Compose 프리뷰 렌더링 시에만 발생했다).. Preview 동작 과정을 뜯어봐야겠다
안드로이드 스튜디오의 알려진 문제들 - Compose 미리보기 렌더링 중 오류 발생
나도 오늘 포스팅한 이 오류가 Compose 미리보기 렌더링 시에 간헐적으로 발생해서 읽어봤는데 없었다..
처음보는 오류 3가지만 적혀있었다. 항상 개발보다 환경설정이 더 어려운 것 같다ㅎ;
Android 스튜디오 및 Android Gradle 플러그인의 알려진 문제 | Android Studio | Android Developers
Android 스튜디오 및 Android Gradle 플러그인의 현재 알려진 문제에 관해 알아보세요.
developer.android.com
'개발 > 트러블슈팅' 카테고리의 다른 글
[안드로이드] 채팅 기능 메시지 그룹화 로직 개선 (0) | 2024.11.19 |
---|---|
[안드로이드] 릴리즈 빌드 시 난독화 설정 문제(카카오, 네이버 소셜 로그인) (1) | 2024.11.18 |
[안드로이드] 안드로이드 스튜디오 PluginException (0) | 2023.11.10 |
[안드로이드] Jetpack compose dependency 설정 (0) | 2023.07.11 |
[안드로이드] FragmentContainerView NullPointerException 해결 (0) | 2023.05.27 |