ProtocolBuffer在Android端的解析
开题篇
近期公司在使用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的长处我就明确体积小不易被破解,其它的感觉没什么,作为移动端开发人员,事实上关心的还是假设解析这玩意。
最新文章
- JavaScript零基础学习系列三
- C# 实现 Excel文件的数据导入
- Ubuntu 12.04 root账户开启及密码重设
- LeetCode Power of Three
- Java SWT 做计算器。
- 采用HSV生成随机颜色
- 用c++builder读取一个一行有多行变量的文件
- 【编程基础】const与#define的区别
- python自定义线程池
- cf479C Exams
- 阿里云server(ECS)优惠券领取
- bootstrap-treeview 树形菜单带复选框以及级联选择
- 《Java大学教程》—第21章 高级案例研究
- Python_subprocess模块
- 真机调试adb:wait for device 解决方案
- layui switch 开关监听 弹出确定状态转换
- AVL平衡二叉树实现,图解分析,C++描述,完整可执行代码
- SQL Server T—SQL 基本编程
- 【转载】Vmware Vconverter从物理机迁移系统到虚拟机P2V
- 【代码笔记】iOS-ios7 StatusBar
热门文章
- Navicat for SQL Server创建连接提示错误08001怎么办
- 算法笔记_062:蓝桥杯练习 最小乘积(基本型)(Java)
- [物理题+枚举] hdu 4445 Crazy Tank
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
- Centos下源码安装git
- Linux SWAP 深度解读
- android实现下拉框(spinner),自己定义大小颜色背景位置,去掉默认样式黑边
- android studio - 修改logcat颜色字体
- Java序列化与反序列化学习(二):序列化接口说明
- redis源码学习_字典