Как правильно использовать связку Dagger и Kotlin Serialization

Изучаю как работает даггер и тут возникла проблема, в связке с kotlin serialization он выдает такую ошибку: java.lang.IllegalArgumentException: Unable to create converter for java.util.List<com.example.testdaggerapplication.model.Photo> Все заведомо рабочее, потому что по сути переношу с ручного DI на даггер, и маппинг даггера тоже правильный, потому что с GsonConverterFactory.create(GsonBuilder().create()) все работает Всю голову себе сломал не понимаю почему он не может создать конвертер kotlin serialization ниже представлю код модуля подключения к сети

@Module
class NetworkModule {

companion object{
    private const val BASE_URL = "https://android-kotlin-fun-mars-server.appspot.com/"
    private val CONVERTER_FACTORY = Json{ignoreUnknownKeys = true}.asConverterFactory("application/json".toMediaType())
}

//@Binds
//fun provideNetworkConnection(){}

@Provides
fun provideRetrofit(): Retrofit =
    Retrofit.Builder()
        .baseUrl(BASE_URL)
        //.addConverterFactory(GsonConverterFactory.create(GsonBuilder().create()))
        //.addConverterFactory(CONVERTER_FACTORY)
        .addConverterFactory(Json{ignoreUnknownKeys = true}.asConverterFactory("application/json".toMediaType()))
        .build()


@Provides
fun provideMarsService(retrofit: Retrofit):MarsPhotosService =
    retrofit.create(MarsPhotosService::class.java)
}


@Serializable 
data class Photo(     
    @SerialName("id")
    val userID: String,     
    @SerialName("img_src")
    val imgUrl:String
)

Ну и весь стектрейс

FATAL EXCEPTION: main
Process: com.example.testdaggerapplication, PID: 19700
java.lang.IllegalArgumentException: Unable to create converter for java.util.List<com.example.testdaggerapplication.model.Photo>
    for method MarsPhotosService.getPhotos
    at retrofit2.Utils.methodError(Utils.java:54)
    at retrofit2.HttpServiceMethod.createResponseConverter(HttpServiceMethod.java:126)
    at retrofit2.HttpServiceMethod.parseAnnotations(HttpServiceMethod.java:85)
    at retrofit2.ServiceMethod.parseAnnotations(ServiceMethod.java:39)
    at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:202)
    at retrofit2.Retrofit$1.invoke(Retrofit.java:160)
    at java.lang.reflect.Proxy.invoke(Proxy.java:1006)
    at $Proxy2.getPhotos(Unknown Source)
    at com.example.testdaggerapplication.repository.PhotosRepositoryImpl.getPhotos(PhotosRepositoryImpl.kt:10)
    at com.example.testdaggerapplication.domain.UseCase.execute(UseCase.kt:12)
    at com.example.testdaggerapplication.viewmodel.PhotosViewModel$getPhotos$1.invokeSuspend(PhotosViewModel.kt:24)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:367)
    at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
    at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
    at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
    at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
    at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
    at kotlinx.coroutines.BuildersKt.launch(Unknown Source:1)
    at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
    at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source:1)
    at com.example.testdaggerapplication.viewmodel.PhotosViewModel.getPhotos(PhotosViewModel.kt:23)
    at com.example.testdaggerapplication.viewmodel.PhotosViewModel.<init>(PhotosViewModel.kt:19)
    at com.example.testdaggerapplication.di.DaggerAppComponent$AppComponentImpl.photosViewModel(DaggerAppComponent.java:60)
    at com.example.testdaggerapplication.di.DaggerAppComponent$AppComponentImpl.injectMainActivity(DaggerAppComponent.java:69)
    at com.example.testdaggerapplication.di.DaggerAppComponent$AppComponentImpl.inject(DaggerAppComponent.java:65)
    at com.example.testdaggerapplication.MainActivity.onCreate(MainActivity.kt:17)
    at android.app.Activity.performCreate(Activity.java:8657)
    at android.app.Activity.performCreate(Activity.java:8636)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1417)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4165)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4340)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2584)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loopOnce(Looper.java:226)
    at android.os.Looper.loop(Looper.java:313)
    at android.app.ActivityThread.main(ActivityThread.java:8810)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
    Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@fe3b300, Dispatchers.Main.immediate]
Caused by: kotlinx.serialization.SerializationException: Serializer for class 'Photo' is not found.
Please ensure that class is marked as "@Serializable" and that the serialization compiler plugin is applied.

2023-11-14 01:44:49.273 19700-19700 AndroidRuntime
com.example.testdaggerapplication
    E   at kotlinx.serialization.internal.PlatformKt.serializerNotRegistered(Platform.kt:31)
    at kotlinx.serialization.SerializersKt__SerializersJvmKt.serializer(SerializersJvm.kt:77)
    at kotlinx.serialization.SerializersKt.serializer(Unknown Source:1)
    at kotlinx.serialization.SerializersKt__SerializersJvmKt.serializerByJavaTypeImpl$SerializersKt__SerializersJvmKt(SerializersJvm.kt:113)
    at kotlinx.serialization.SerializersKt__SerializersJvmKt.serializer(SerializersJvm.kt:76)
    at kotlinx.serialization.SerializersKt.serializer(Unknown Source:1)
    at com.jakewharton.retrofit2.converter.kotlinx.serialization.Serializer.serializer(Serializer.kt:21)
    at com.jakewharton.retrofit2.converter.kotlinx.serialization.Factory.responseBodyConverter(Factory.kt:26)
    at retrofit2.Retrofit.nextResponseBodyConverter(Retrofit.java:362)
    at retrofit2.Retrofit.responseBodyConverter(Retrofit.java:345)
    at retrofit2.HttpServiceMethod.createResponseConverter(HttpServiceMethod.java:124)
    ... 41 more

Репозиторий: https://github.com/RMVL-dev/DaggerTestApp.git


Ответы (0 шт):