开题篇

近期公司在使用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的长处我就明确体积小不易被破解,其它的感觉没什么,作为移动端开发人员,事实上关心的还是假设解析这玩意。

最新文章

  1. JavaScript零基础学习系列三
  2. C# 实现 Excel文件的数据导入
  3. Ubuntu 12.04 root账户开启及密码重设
  4. LeetCode Power of Three
  5. Java SWT 做计算器。
  6. 采用HSV生成随机颜色
  7. 用c++builder读取一个一行有多行变量的文件
  8. 【编程基础】const与#define的区别
  9. python自定义线程池
  10. cf479C Exams
  11. 阿里云server(ECS)优惠券领取
  12. bootstrap-treeview 树形菜单带复选框以及级联选择
  13. 《Java大学教程》—第21章 高级案例研究
  14. Python_subprocess模块
  15. 真机调试adb:wait for device 解决方案
  16. layui switch 开关监听 弹出确定状态转换
  17. AVL平衡二叉树实现,图解分析,C++描述,完整可执行代码
  18. SQL Server T—SQL 基本编程
  19. 【转载】Vmware Vconverter从物理机迁移系统到虚拟机P2V
  20. 【代码笔记】iOS-ios7 StatusBar

热门文章

  1. Navicat for SQL Server创建连接提示错误08001怎么办
  2. 算法笔记_062:蓝桥杯练习 最小乘积(基本型)(Java)
  3. [物理题+枚举] hdu 4445 Crazy Tank
  4. XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
  5. Centos下源码安装git
  6. Linux SWAP 深度解读
  7. android实现下拉框(spinner),自己定义大小颜色背景位置,去掉默认样式黑边
  8. android studio - 修改logcat颜色字体
  9. Java序列化与反序列化学习(二):序列化接口说明
  10. redis源码学习_字典