오류 로그
java.lang.IllegalArgumentException: CreationExtras must have a value by `SAVED_STATE_REGISTRY_OWNER_KEY`
오류 시나리오
현재 GDSC TUK(Google Developer Student Clubs - TECH UNIVERSITY OF KOREA)에서 2022년 안드로이드 스터디 마무리 프로젝트로 스쿨메이트라는 서비스를 개발하고 있었다.
초기 프로젝트 셋업 시 Hilt, Ktor 등 필요한 라이브러리도 디펜던시 연결해둔 상태에서 시간이 흘러 내비게이션을 도입을 해야하는 상황까지 오게 되었다. 컴포즈 내비게이션은 회사에서 매 프로젝트마다 작업하던 것이기에 간단하게 생각하고 적용을 하였으나 런타임에서 위의 오류 로그를 만났다.
오류 분석
- NavHost 안에서 composable 분기까지는 문제 없으나 Screen을 넣으면 죽으니 ViewModel의 문제일까?
- ViewModel을 제거하여도 마찬가지로 런타임에서 오류가 발생한다.
- 이전 잘못 빌드된 파일이 남아있는 것일까?
- Clean Build를 하여도 동일하다.
- 내비게이션에서 사용되는 KEY 값이 잘못된 것 일까?
- 하나하나 체크하여도 잘못된 부분이 없다.
오류 원인
혹시나 하고 app단 build.gradle에 들어가 디펜던시를 확인해보니 androidx.hilt:hilt-navigation-compose
만 연결되어 있었다. 그렇다. Hilt 내비게이션만 연결하고 정작 컴포즈 내비게이션 디펜던시는 연결하지 않았던 것이었다. (익숙함에 속아 기본을 놓치지 말자...)
오류 해결
가볍게 컴포즈 내비게이션만 추가해주면 문제를 해결할 수 있다.
implementation "androidx.navigation:navigation-compose:2.5.3"
TIP
블로그 포스팅을 위해 추가적인 정보를 찾다 보니 Fragment를 사용하고 있다면 위와 같은 오류가 발생할 수 있다는 스택오버플로우 글 을 확인하였다.
본인은 순수 Jetpack Compose만으로 구성되어있기에 생략하여도 문제없었으나, 혹시라도 위의 디펜던시를 추가하여도 문제가 발생하시는 분은 아래의 디펜던시를 추가하면 된다.
implementation "androidx.fragment:fragment-ktx:1.5.4"
'개발 > Android' 카테고리의 다른 글
안드로이드 뒤로가기 두번 눌러 종료 기능 Flow로 구현하기 (0) | 2023.11.28 |
---|---|
안드로이드 Proto 설정 시 오류 (0) | 2023.08.14 |
[Room DB] Room Database 마이그레이션 시 주의점 2가지 (0) | 2022.12.05 |
PopupWindow에서 Jetpack Compose를 사용하는 방법 (1) | 2022.11.04 |
안드로이드 gRPC 개념 및 사용법 (2) | 2022.10.12 |
상상하는 것을 소프트웨어로 구현하는 것을 좋아하는 청년
게시글이 마음에 드시나요? [ 공감❤️ ] 눌러주시면 큰 힘이 됩니다!