我花了几个小时在Android Studio中使用Kotlin设置Protobuf,最终目标是我的proto文件在Kotlin中编译,并且我可以在我的项目中使用它们。我在多个目录中有多个proto-file。protobuf源目录/Users/me/CLionProjects/proto-files
包含4个目录,其中有proto-file。
下面是一个复制路径。这是我在互联网上找到的教程的共同努力。这可能是可怕的错误。我尝试了https://github.com/google/protobuf-gradle-plugin,但它只是看起来如此复杂的东西简单,我正在做:
- 在文件系统的某个地方有一个包含protofiles的目录
- 在Kotlin上创建新的Android项目
- 在Project build.gradle中,添加
id 'com.google.protobuf' version '0.9.2' apply false
作为插件 - 在模块build.gradle中,添加-〉
1.这对于依赖项:implementation 'com.google.protobuf:protobuf-lite:3.21.12'
android
支架内底部的sourceSets
protobuf
部分位于dependencies
和android
部分之间的底部。
源集:
sourceSets {
main {
kotlin {
srcDirs += 'build/generated/source/proto/main/kotlin'
}
proto {
srcDir '/Users/me/CLionProjects/proto-files'
}
}
}
原缓冲液:
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.21.12'
}
plugins {
kotlinlite {
artifact = 'com.google.protobuf:protoc-gen-kotlin:3.20.1'
}
}
generateProtoTasks {
ofSourceSet("main").forEach { task ->
task.builtins {
getByName("kotlin") {
option("lite")
}
}
}
}
}
我得到这个错误:
A problem occurred evaluating project ':app'.
> Could not find method proto() for arguments [build_cxwfo79b6zcc266x9rsqzou9f$_run_closure1$_closure8$_closure10$_closure12@203aac02] on source set main of type com.android.build.gradle.internal.api.DefaultAndroidSourceSet.
1条答案
按热度按时间l3zydbqr1#
你的情况很好,但是,还缺少一些东西:
我将分享的gradle代码是用Kotlin编写的,以防万一。如果你能将你的成绩文件转换成Kotlin,那就太好了,如果不能,你就必须将它们转换成groovy。
1.首先要检查的是,
proto
文件夹是否位于正确的路径中,它应该位于1.在项目gradle中,确保已应用该插件
1.在应用gradle中,请确保具备以下条件。
依赖关系:
以及protobuf任务:
以下是我正在使用的版本:
这样,您的项目就应该基于您的proto文件生成代码。
为了进一步参考,我最近构建了这个基于Kotlin+ gRPC的Android应用程序:https://github.com/wilsoncastiblanco/notes-grpc