根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文件
|