我尝试将原始定义编译到 kotlin 存根中,但遇到了导入问题。我的等级是
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:3.21.2"
}
plugins {
grpckt {
artifact = "io.grpc:protoc-gen-grpc-kotlin:1.3.0:jdk8@jar"
}
}
generateProtoTasks {
all().forEach { task ->
task.builtins {
grpckt {
option 'lite'
}
}
task.plugins {
kotlin {
option 'lite'
}
}
}
}
}
dependencies {
//grpc dependency
implementation("io.grpc:grpc-kotlin-stub:1.3.0")
implementation 'io.grpc:grpc-okhttp:1.47.0'
implementation("io.grpc:grpc-protobuf:1.47.0")
implementation("com.google.protobuf:protobuf-kotlin:3.21.12")
implementation 'io.grpc:grpc-protobuf-lite:1.47.0'
}
选项 java_multiple_files = true - 没有帮助。
您正在 lite 模式下配置原型生成,但不使用 kotlin-lite 库。这可能会导致您的问题。
尝试更换
implementation("com.google.protobuf:protobuf-kotlin:3.21.12")
与
implementation("com.google.protobuf:protobuf-kotlin-lite:3.21.12")
可能为时已晚,但对于所有通过 Google 找到方法的人来说,您还需要生成 Java 源文件才能完成这项工作。
protobuf {
protoc { artifact = "com.google.protobuf:protoc:${protobufVersion}" }
plugins {
id("grpc") {
artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}"
}
id("grpckt") {
artifact = "io.grpc:protoc-gen-grpc-kotlin:${grpcKotlinVersion}:jdk8@jar"
}
id("java"){
artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}"
}
}
generateProtoTasks {
all().forEach { task ->
task.plugins {
id("grpc") {
option("lite")
}
id("grpckt") {
option("lite")
}
id("java") {
option("lite")
}
}
task.builtins {
id("kotlin")
}
}
}
}
dependencies {
implementation("io.grpc:grpc-okhttp:${grpcVersion}")
implementation("io.grpc:grpc-protobuf-lite:${grpcVersion}")
implementation("io.grpc:grpc-stub:${grpcVersion}")
implementation("io.grpc:grpc-kotlin-stub:${grpcKotlinVersion}")
implementation("com.google.protobuf:protobuf-javalite:${protobufVersion}")
implementation("com.google.protobuf:protobuf-kotlin-lite:${protobufVersion}")
}