Android developer 공식문서에서 Get the data from Internet 코스를 수강하고 마무리로 앱을 실행시켰는데 바로 에러가 떴다.
문서와 다른 것이 없는데 왜 그러지? 생각하며 Logcat을 확인했더니 에러 사유가 다음과 같았다.
java.lang.IllegalArgumentException: Unable to create converter for java.util.List<com.example.marsphotos.network.MarsPhoto> for method MarsApiService.getPhotos
첫 번째 에러사유 같은 경우 MarsApiService 인터페이스에서 정의한 메서드인 getPhotos를 위한 converter를 만들 수 없다고 한다
Caused by: kotlinx.serialization.SerailizationException: Serializer for class ‘MarsPhoto’ is not found.
해결방법 : ensure that class is marked as ‘@Serializable’ and that the serialization compiler plugin is applied.
두 번째 에러사유 같은 경우에는 data class인 MarsPhoto를 위한 Serializer를 못 찾았다고 한다.
해결방법으로는 MarsPhoto 클래스가 @Serializable
로 표기가 되어있는지 확인하거나 serialization compiler plugin이 지원되는지 확인을 하라고 되어있다.
MarsPhoto 클래스가 @Serializable
로 표기가 되어있는 것은 3번은 확인했기 때문에 build.gradle(:app)의 플러그인의 버전을 확인했다.
공식문서에서 올려준 코드를 그대로 사용했기 때문에 1.8.10 버전을 사용하고 있다.이 부분을 현재 출시된 serialization 플러그인 버전에 맞게 변경을 해줘야 한다
serialization-plugin에 들어가서 최신 버전을 확인한 후에 변경을 해주고 Sync Now
를 클릭해주면 된다
이 글을 작성하는 시점에는 2.0.21버전이 안정화된 버전이라 2.0.21버전을 작성하였다.
다시 실행해보자
잘 작동한다