开题篇

近期公司在使用Protocol Buffer替代原先的json作为移动端的数据交互格式。虽然服务端和CTO把这项新技术吹的天花乱坠,说什么体积小,不易被破解乱七八糟的。可是作为Android端人员,我仅仅关心数据怎样解析的问题。折腾了两天,终于解析成功,我来分享下我的过程,有什么更好的建议大家都提提。

生成Java实体类篇

网上找了一大堆的攻略。都是讲protocol的下载与编译,给的链接大部分已经不能直接下载。我直接说我怎么做的。

下载最新的proctoc.exe 链接地址https://github.com/google/protobuf/releases“>https://github.com/google/protobuf/releases

里面有个protoc-3.0.0-alpha-3-win32.zip直接下载。能够在里面拿到protoc.exe

配置到环境变量,这个都是老手了。在系统中自己配置下方便于在不论什么地方使用黑窗体使用就能够。

拿到server端提供的他定义好的 .proto文件

编译.proto文件 protoc --java_out=D:/ test.proto Javaout后面的是编译输出的路劲地址,第二个參数是须要编译的proto文件。

编译成功后直接将生成的Javabean拷贝到Android项目中。

解析工具篇

曾经接项目当中网络訪问层使用的是xutils框架中的HttpUtils,这个有长处也有缺点,好像是国人自己封装的,在请求成功的方法中直接将结果强制转化成了字符串,我这此试验了非常久使用的是android-async-http 链接https://github.com/loopj/android-async-http 直接能够返回字节流,使用字节流解析。(PS不是懒得自己写框架,程序猿界那句话:不要反复造轮子。再说项目经理也不能给你时间自己写一个近乎完美的框架出来)。

这样解析工具就准备好了。

项目依赖库篇

依赖库,由于protocolbuffer是Google提供的,所以使用AndroidStudio非常easy引入最新的依赖库。直接选中项目 按下F4,选择Dependencies选项卡,从网络加入依赖库,输入keywordcom.google.protobuf就能够搜索到最新的protocolbuffer依赖库。(eclipse 的开发人员在studio引入后直接把studio下载好的jar拖进去就好)

解析篇

解析工具、依赖库和实体类所有导入到项目中后。就能够依据服务端提供的接口訪问成功后解析了

非常简单的解析,我的实体类叫做API。解析就一句话

API api = API.parseFrom(byte[] data)

语文不好。仅仅能说这么多,有须要我帮助的直接评论就好。

总结

protocolbuffer的长处我就明确体积小不易被破解,其它的感觉没什么,作为移动端开发人员,事实上关心的还是假设解析这玩意。

ProtocolBuffer在Android端的解析的更多相关文章

  1. Java服务器对外提供接口以及Android端向服务器请求数据

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5056780.html 讲解下java服务器是如何对移动终端提供接口的,以什么数据格式提供出去,移动端又是怎么 ...

  2. Android Service完全解析,关于服务你所需知道的一切(下)

    转载请注册出处:http://blog.csdn.net/guolin_blog/article/details/9797169 在上一篇文章中,我们学习了Android Service相关的许多重要 ...

  3. Android OkHttp完全解析 --zz

    参考文章 https://github.com/square/okhttp http://square.github.io/okhttp/ 泡网OkHttp使用教程 Android OkHttp完全解 ...

  4. Android OkHttp完全解析 是时候来了解OkHttp了

    Android OkHttp完全解析 是时候来了解OkHttp了 标签: AndroidOkHttp 2015-08-24 15:36 316254人阅读 评论(306) 收藏 举报  分类: [an ...

  5. Android端上传图片到后台,存储到数据库中 详细代码

    首先点击头像弹出popwindow,点击相册,相机,调用手机自带的裁剪功能,然后异步任务类访问服务器,上传头像,保存到数据库中, 下面写出popwindow的代码 //设置popwindow publ ...

  6. 【转】Android Service完全解析,关于服务你所需知道的一切(下) ---- 不错

    原文网址:http://blog.csdn.net/guolin_blog/article/details/9797169 转载请注册出处:http://blog.csdn.net/guolin_bl ...

  7. Android ListView分页载入(服务端+android端)Demo

    Android ListView分页载入功能 在实际开发中经经常使用到,是每一个开发人员必须掌握的内容,本Demo给出了服务端+Android端的两者的代码,并成功通过了測试. 服务端使用MyEcli ...

  8. Android端恶意锁屏勒索应用分析

    一.前言 5月12日,一场全球性互联网灾难悄然而至,一款名为WannaCRY的PC端恶意勒索软件利用NSA泄漏的危险漏洞“永恒之蓝”,给100多个国家和地区10万台电脑造成了巨大的损失.到2017年为 ...

  9. [转]Android Service完全解析,关于服务你所需知道的一切

      目录(?)[+] Android Service完全解析,关于服务你所需知道的一切(上) 分类: Android疑难解析2013-10-31 08:10 6451人阅读 评论(39) 收藏 举报 ...

随机推荐

  1. 如何使用angularjs实现文本框设置值

    <!DOCTYPE html> <html ng-app="myApp"> <head> <title>angularjs-setV ...

  2. FFMpeg框架代码阅读

    http://blog.csdn.net/wstarx/article/details/1572393 FFMPEG源码分析(二) http://www.cnblogs.com/qingquan/ar ...

  3. ES6 const用法

    1.const声明一个只读的常量.一旦声明,常量的值就不能改变. 2.const的作用域与let命令相同:只在声明所在的块级作用域内有效. 3.const命令声明的常量也是不提升,只能在声明的位置后面 ...

  4. Intellij IDEA 10.5 语言设置

    适应于:英文操作系统,但是语言和区域设置为中文的环境. Mac: /Applications/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions 增加 - ...

  5. 【Python】学习笔记十:字典

    字典是Python中唯一的映射类型(哈希表) 字典的对象时可变的,但字典的键值必须是用不可变对象,并且一个字典中可以使用不同类型的键值 1.定义字典 dict={key1:value1,key2:va ...

  6. WebSphere监控软件 TPV(Tivoli Performance Viewer)的缺点

    TPV的缺点     大家都知道 IBM 的 WebSphere Application Server(WAS)在v5之后自带有TPV(Tivoli Performance Viewer) 用来监控W ...

  7. (四)Oracle学习笔记—— 常见函数

    1. 字符串类型及函数 字符类型分 种,char(n) .varchar(n).varchar2(n) : char(n)固定长度字符串,假如长度不足 n,右边空格补齐: varchar(n)可变长度 ...

  8. Java 连接 Oracle 数据库

    首先要导入ojdbc6.jar 包(放在lib文件夹) 然后需要在数据库建一个student表进行测试: 连接及测试代码: import java.security.interfaces.RSAKey ...

  9. PHP中获取当前页面的完整URL & php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别

    #测试网址:     http://localhost/blog/testurl.php?id=5 //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<b ...

  10. Impala中多列转为一行

    之前有一位朋友咨询我,Impala中怎样实现将多列转为一行,事实上Impala中自带函数能够实现,不用自己定义函数. 以下我開始演示: -bash-4.1$ impala-shell Starting ...