如何在Kotlin DSL Gradle中正确配置Protobuf接入Proto DataStore
Kotlin DSL 下Proto DataStore的Protobuf正确配置
你当前的配置存在语法、版本、规则三类问题,直接替换为以下配置即可正常工作:
原有配置的错误点
- Protobuf Gradle插件版本
0.8.12过旧,对Kotlin DSL兼容性差,无法适配当前版本的Proto DataStore - 混用Groovy语法:Kotlin DSL中字符串必须使用双引号,不支持单引号包裹字符串值
- 缺少javalite生成规则的正确声明、未指定proto文件存放路径、未引入对应运行时依赖
完整可用配置
模块级build.gradle.kts配置如下,你原有配置中的自定义项(比如android编译配置、hilt相关配置、其他业务依赖)直接保留即可:
plugins { id("com.android.library") id("org.jetbrains.kotlin.android") id("kotlin-kapt") id("dagger.hilt.android.plugin") id("com.google.protobuf") version "0.9.4" } android { // 此处保留你原有的compileSdk、defaultConfig、buildTypes等配置 // 新增proto源集配置 sourceSets { getByName("main") { proto { srcDir("src/main/proto") } } } } protobuf { protoc { artifact = "com.google.protobuf:protoc:3.25.1" } generateProtoTasks { all().forEach { task -> task.builtins { create("java") { option("lite") } // 需要生成Kotlin版proto代码时保留以下块,不需要可删除 create("kotlin") { option("lite") } } } } } dependencies { // 此处保留你原有的hilt、三方库等依赖 // 新增Proto DataStore相关依赖 implementation("androidx.datastore:datastore-core:1.0.0") implementation("com.google.protobuf:protobuf-javalite:3.25.1") // 启用了kotlin代码生成时添加以下依赖 implementation("androidx.datastore:datastore:1.0.0") }
后续使用说明
- 将所有
.proto协议文件放到src/main/proto目录下 - 同步Gradle后执行一次模块编译任务,自动生成的代码会输出到
build/generated/source/proto/路径,可直接在业务代码中引用 - 不要手动修改build目录下自动生成的proto代码,所有协议调整直接修改.proto文件后重新编译即可
内容的提问来源于stack exchange,提问作者Cristian Velez
相关产品推荐
相关产品推荐

