demo地址:https://github.com/zhaopingfu/listener22_Protobuf
protobuf
源码: https://github.com/google/protobuf
如果不想自己编译获得最新版本,则可以下载官方编译好的各个平台的
下载地址: https://github.com/google/protobuf/releases,注意不是带语言后缀的文件,那是源码,如下图:
Android中使用protobuf
第一步:写一个proto文件:
person.proto
内容如下:
option optimize_for=LITE_RUNTIME; // 使用lite模式
package com.pf.pojo;option java_outer_classname = "ProtoPerson"; // 输出的java文件名 message Person{ optional string name = 1; optional uint32 age = 2; }
第二步:编译,生成java文件
编译命令:C:\Users\Administrator\Desktop\protoc-3.4.0-win32\bin>protoc.exe –java_out=. person.proto第三步:将生成的java文件拷贝到编译器中(代码中需要用到compile ‘com.google.protobuf:protobuf-java:3.3.1’)
发现问题
在Android中使用protoc代码,需要先写一个protoc文件,然后在编译生成java文件,最后拷贝到编译器中,如果我们修改了proto文件,那么每次都要执行上面的三个步骤,非常麻烦,所以要写这个插件
配置插件
第一步:将buildSrc复制过去
第二步:在app下的build.gradle中引用插件
apply plugin: com.pf.protobuf.ProtobufPlugin protobuf { // proto文件的路径 srcDir 'src/main/proto' protoc { // path '' artifact 'com.google.protobuf:protoc:3.2.0' } }
第三步:在app下的dependencies中引用
compile ‘com.google.protobuf:protobuf-java:3.3.1’