-
在project的build.gradle中配置
buildscript { repositories { google() jcenter() mavenCentral() maven { url "https://jitpack.io" } } dependencies { classpath 'com.android.tools.build:gradle:3.1.2+' classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.2+' } }
-
在app的build.gradle中配置
... apply plugin: 'com.google.protobuf' ... android { ... sourceSets { main { proto { //main目录新建proto目录 srcDir 'src/main/proto' include '**/*.proto' } java { srcDir 'src/main/java' } } } ... } dependencies { ... //protobuff库 implementation 'com.google.protobuf:protobuf-java:3.5.0+' implementation 'com.google.protobuf:protoc:3.5.0+' ... } //构建task protobuf { protoc { artifact = 'com.google.protobuf:protoc:3.5.0+' } generateProtoTasks { all().each { task -> task.builtins { remove java } task.builtins { java {} // Add cpp output without any option. // DO NOT omit the braces if you want this builtin to be added. cpp {} } } } //生成目录 generatedFilesBaseDir = "$projectDir/src/generated" }
-
创建proto文件
option java_package = "com.cheng.app"; option java_outer_classname = "AddressBookProtos"; message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { required string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phone = 4; } message AddressBook { repeated Person person = 1; }
-
一个简单实例
AddressBookProtos.Person.PhoneNumber pn = AddressBookProtos.Person.PhoneNumber.newBuilder() .setNumber("18202745852") .setType(AddressBookProtos.Person.PhoneType.HOME) .build(); AddressBookProtos.Person person = AddressBookProtos.Person.newBuilder() .setId(1) .setName("text") .setEmail("123") .addPhone(pn) .build(); try { long start = System.currentTimeMillis(); //编码 byte[] bytes = person.toByteArray(); //解码测试 AddressBookProtos.Person p = AddressBookProtos.Person.parseFrom(bytes); System.out.println("================== start ================="); System.out.println(p.getEmail()); System.out.println(p.getPhone(0).getNumber()); System.out.println("\n=========== PhoneNumber ============"); System.out.println(phoneNumber); System.out.println("=========== Person ==========="); System.out.println(p); System.out.println("excute time is:" + (System.currentTimeMillis() - start)); } catch (InvalidProtocolBufferException e) { e.printStackTrace(); }
06-06
1237
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
03-31
487
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)