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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:27:15