根gradle依赖
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.0'
gradle中
// 指定proto存放的目录,与src目录同级
sourceSets {
main {
proto.srcDirs = [
'protos'
]
}
}
//编写编译任务,调用plugin编译生成java文件 与sourceSets同目录
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.5.1'
}
generateProtoTasks {
all().each { task ->
task.builtins {
remove java
}
task.builtins {
java {}
}
}
}
}
dependencies { implementation 'com.google.protobuf:protobuf-java:3.5.1' implementation 'com.google.protobuf:protoc:3.5.1' }
proto3 规则中不能使用required和optional限制性的关键字 enumn中的字段的值必须从0开始
syntax = "proto3";
package baidu.demo;
enum Status {
NO_HAVE_NAVI = 0;
ROUTE_PLANNING = 1;
ROUTE_GUIDE = 2;
CRUISE = 3;
YAWING = 4;
RE_PLANNING = 5;
}
message NaviStatus {
Status navi_status = 1;
uint32 remain_dis = 2;
}
编译成功后在build-generated-source-proto中找到生成的java文件