You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Apollo GraphQL Kotlin Codegen生成的Fragment支持序列化?

Apollo GraphQL Kotlin Fragment序列化解决方案

要让codegen自动生成支持序列化的Fragment类,从而能安全保存到实例状态,最便捷的方式是通过配置Apollo插件,让生成的模型自动实现Android常用的Parcelable或者kotx.serialization序列化:

方式一:生成Parcelable实现(Android场景首选)

  1. 先在模块的build.gradle.kts中启用kotlin-parcelize插件:
plugins {
    id("com.android.application") // 或 library
    id("org.jetbrains.kotlin.android")
    id("kotlin-parcelize") // 新增该插件
    id("com.apollographql.apollo3")
}
  1. 配置Apollo服务生成Parcelable模型:
apollo {
    service("yourServiceName") {
        generateKotlinModels.set(true)
        kotlinModels {
            // 开启自动生成Parcelable实现,覆盖Fragment类
            parcelable.set(true)
        }
    }
}
  1. 执行Clean Project后Rebuild,生成的Fragment类会自动带上@Parcelize注解并实现Parcelable接口,直接就能放到SavedStateHandle或者Bundle里保存实例状态。

方式二:生成kotx.serialization序列化支持

如果项目采用kotx序列化体系,也可以配置codegen自动生成序列化注解:

  1. 启用kotx序列化插件并添加依赖:
plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
    id("kotlinx-serialization") // 新增插件
    id("com.apollographql.apollo3")
}

dependencies {
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0") // 适配项目的版本
}
  1. 配置Apollo服务使用kotx序列化:
apollo {
    service("yourServiceName") {
        generateKotlinModels.set(true)
        kotlinModels {
            serializer.set(KotlinSerializer.KOTX_SERIALIZATION)
        }
    }
}
  1. Rebuild后,生成的Fragment类会自动添加@Serializable注解,可通过kotx序列化工具转为可存储格式,再保存到实例状态中。

两种方式都完全依赖codegen自动生成代码,不需要手动给Fragment类补写序列化逻辑,能最大程度减少重复工作。

内容的提问来源于stack exchange,提问作者Raj Chaudhary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 10:02:36