1、在app的build.gradle文件开头添加
buildscript {
repositories {
gradlePluginPortal()
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.19'
}
}
2、在proto文件所在的build.gradle文件中的
plugins 项中添加
id 'com.google.protobuf'
例如
plugins {
id 'com.google.protobuf'
id 'com.android.library'
}
3、在proto文件所在的build.gradle文件中的
android 项中添加
sourceSets {
main {
//实际测试指不指定无所谓,不影响 Java 文件生成
proto {
srcDir 'src/main/java/com/nhzero/connection/proto'
}
}
}
4、在proto文件所在的build.gradle文件中的
android项下面(注意,和android项是平级关系)
添加
protobuf {
//配置 protoc 编译器
protoc {
artifact = 'com.google.protobuf:protoc:3.19.2'
}
//配置生成目录,编译后会在 build 的目录下生成对应的java文件
generateProtoTasks {
all().each { task ->
task.builtins {
remove java
}
task.builtins {
java {}
}
}
}
}
5、在proto文件所在的build.gradle文件的
dependencies项中添加
implementation 'com.google.protobuf:protobuf-java:3.19.2'
6、proto文件引入其他proto文件定义的对象的例子
syntax = "proto3";
//指定包名
package com.nhzero.connection.proto;
option java_package = "com.nhzero.connection.proto";
option java_outer_classname = "ProtoCircle";
import "Point.proto";
message Circle{
string polyId = 1;
string name = 2;
Point center = 3;
int32 radius = 4;
repeated Point pointList = 5;
int32 lineColor = 6;
int32 width = 7;
int64 createTime = 8;
int32 userId = 9;
}
Point.proto文件内容如下:
syntax = "proto3";
package com.nhzero.connection.proto;
option java_package = "com.nhzero.connection.proto";
option java_outer_classname = "ProtoPoint";
message Point{
float latitude = 1;
float longitude = 2;
}