룬아님의 취중코딩

Found data binding errors. (데이터 바인딩 에러를 찾아보자) 본문

개발/안드로이드 개발

Found data binding errors. (데이터 바인딩 에러를 찾아보자)

룬아님 2019. 9. 6. 16:56

개인적으로 데이터 바인딩을 사용하면서

[kapt] An exception occurred: android.databinding.tool.util.LoggedErrorException: Found data binding errors.

해당 에러를 매우 많이 봐왔고 정확한 에러 위치 조차 알려주지 않아 시간을 허비한 경우가 굉장히 많았습니다.

 

<androidx.recyclerview.widget.RecyclerView
      android:id="@+id/rv_chat"
      android:layout_width="match_parent"
      android:layout_height="0dp"
      android:layout_weight="1"
      app:items="@{viewmodel.item}"
      app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />

만약 viewmodel.items를 써야 하는 상황에서 viewmodel.item이라고 쓰게 된다면 위의 에러를 보게 됩니다.

xml 코드가 짧다면 문제 없이 원인을 찾을 수 있겠지만 길어진 xml 코드에서 데이터 바인딩 에러를 찾기는 굉장히 어려웠습니다.

 

이때에 안드로이드 스튜디오 터미널에서

./gradlew assembleDebug --debug --stacktrace

해당 명령어를 치게되면 debug로그가 상세하게 터미널에 표시됩니다.

빌드를 마친이후에 터미널에 찍힌 로그를 보게 되면

16:45:02.051 [ERROR] [org.gradle.api.Task] e: [kapt] An exception occurred: android.databinding.tool.util.LoggedErrorException: Found data binding errors.
Could not find accessor <packagename>.ChatViewModel.item

file:///<path>/app/src/main/res/layout/chat_fragment.xml Line:28

이런 로그를 찾을 수 있게 됩니다.

ChatViewModel에서 item을 찾을 수 없다는 에러와 함께 해당 파일과 코드 위치까지 알려줍니다.

그러면 해당 위치에서 문제를 찾고 고쳐주면 빠르게 데이터 바인딩 문제를 해결할 수 있습니다.

반응형
Comments