美文网首页
android 中使用protocolbuffer

android 中使用protocolbuffer

作者: FlatMap2021 | 来源:发表于2018-01-21 20:53 被阅读0次

    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(),转化为我们需要的对象就可以了

    相关文章

      网友评论

          本文标题:android 中使用protocolbuffer

          本文链接:https://www.haomeiwen.com/subject/ziuqaxtx.html