最近刚学习kotlin想做个简单的前后端沟通功能,传输数据使用proto,但是网上看了看将proto文件转成.kt文件好多都说需要改什么androd工程的build之类的东西,看着就好烦。
那有没有简单的直接一个命令行就生成kt文件的呢,当然有,当然用到的还是protoc,在加上pbandk。
1.下载最新版protoc,并将protoc加的系统path里(不是window则使用chmod +x protoc添加到全局)。
2.1 非windows系统下载pbandk,然后改名为protoc-gen-pbandk,并使用chmod +x protoc-gen-pkandk使其所有位置都可以使用。最后使用下面代码生成对应的kt文件。
protoc --pbandk_out=输出目录 需要解析的proto文件(带.proto)
2.2 windows系统下载最新protoc-gen-kotlin(zip文件),解压后找到其中protoc-gen-kotlin.bat文件,在proto文件目录位置(不在此目录下会提示需要使用–proto_path或-I参数添加proto所在路径)使用cmd运行下面命令行生成kt文件。
protoc --pbandk_out=输出目录 --plugin=protoc-gen-pbandk=pbank解压目录/protoc-gen-kotlin.bat 需要解析的proto文件(带.proto)
虽说protoc本来支持了kotlin解析成kt文件,但我用了那个命令生成的kt文件里面的结构体是什么都没有的。根本用不了。无奈只能用这个方法。但是这个生成的会多一个val unknownFields: Map<Int, pbandk.UnknownField> = emptyMap()
data class xxx(
...
val unknownFields: Map<Int, pbandk.UnknownField> = emptyMap()
):xxxx
...
但它不影响使用。