android 中使用protocolbuffer

2018-01-21  本文已影响0人  FlatMap2021

1.什么是protobuf?

关于protobuf 网上都能搜到复制一段看下:Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。文字看着空洞不实在,来点干的,我们公司之所以使用protobuf而不用json就是传输效率的问题,由于自己水平有限,之前也没有了解过这个解析方式,所以、花费了一周的时间才能真正运用它,这里写出来希望能多少帮助其他人。

2.安装接入

安装可以直接去官网下载安装,https://developers.google.com/protocol-buffers/docs/downloads

也许是我在网上找到的资源都是前辈写的,很多使用方式与我现在的不一样,我这里放出我使用的方式:

首页build中导入:与Android 平级导入,我这里使用的是3.0.0,这个版本可以使用map字段,2.5.0的不可以

配置Gradle

no1项目的build.gradle文件加入:

classpath'com.google.protobuf:protobuf-gradle-plugin:0.8.0'

no2、模块的build.gradle

顶部添加protobuf插件

apply plugin:'com.google.protobuf'

android结点增加proto文件位置配置

sourceSets {        main {            proto {                srcDir'src/main/proto'include'**/*.proto'}            java {                srcDir'src/main/java'}        }    }

no3.添加依赖

compile'com.google.protobuf:protobuf-java:3.1.0'

compile'com.google.protobuf:protoc:3.1.0'

增加protobuf结点

protobuf {    protoc {        artifact ='com.google.protobuf:protoc:3.1.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"}

3 正式使用

语法说明略》》》

在使用前一定是要先了解语法的,这个网上都是可以直接搜到:这里我只是单纯的放出我的代码示例,看着这个例子应该会明白好多

(1)import 导入

    (2)类之间的嵌套

(3)请求参数为list

具体贴出一个怎么使用,按照建造者模式创建请求的,我项目使用的是okhttp,,这段代码是把所有的请求参数转化为byte[]

请求成功后把得到的结果数组利用.parseFrom(),转化为我们需要的对象就可以了
上一篇下一篇

猜你喜欢

热点阅读