728x90
몇일전 일을 하는 도중 아래와 같은 이슈를 만났습니다.
Fatal Exception: java.lang.NullPointerException
Missing required view with ID: com.{package}.debug:id/{resource_id}
ViewBinding 을 사용하고 있는데, xxxxBinding 클래스에서 해당 아이디를 찾지못하는 이슈였습니다.
해당 레이아웃 파일에 들어가서 확인해보니, 아이디가 잘 선언되어 있고, ctrl + 클릭 조합으로도 리소스가 잘 이어져있는 것을 확인했습니다.
잠시 등에 땀이 흐를뻔했지만, 혹시나해서 같은 바인딩 클래스가 있는지 확인해봤습니다 .
A 모듈에서 xxxxBinding 클래스가 사용되고 있었고, B 모듈에서도 xxxxBinding 클래스가 만들어져서 사용되고 있었습니다.
컴파일시에 문제를 잡아줄 것 이라고 생각했지만, 빌드가 잘 되었고 (?!) 런타임에서 문제가 발생하였습니다.
다행히 QA 단계로 인해 문제 없이 배포되었지만, 혹시나 테스트가 없었더라면 유저들에게 좋지 못한 경험을 제공했을 것 같습니다.
이슈를 해결 혹은 만나지 않기 위해서라면 레이아웃 아이디나 파일명을 정의할 떄는 꼭 정해진 컨벤션에 맞추는 것이 좋을 것 같습니다.
그리고 아이디 전체변경이나 약간의 문법 수정과 같은 기계적인 변경에도 컨벤션이 맞춰져 있으면 매크로를 만들기 쉽고 결과적으로 시간을 크게 단축시킬 수 있습니다.
그럼 20000
728x90
'Android > Today I Learned' 카테고리의 다른 글
Android Font 고군분투기 (1) | 2021.12.06 |
---|---|
Coil 로 OnDemand-image-resizing 적용하기 (0) | 2021.11.23 |
Glide cache 제거 하기 (0) | 2021.11.21 |
테스트 케이스로 작성해보는 RxJava 함수 (0) | 2021.02.07 |
Recycler view 동작 원리 (0) | 2019.04.13 |