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的长处我就明确体积小不易被破解,其它的感觉没什么,作为移动端开发人员,事实上关心的还是假设解析这玩意。
ProtocolBuffer在Android端的解析的更多相关文章
- Java服务器对外提供接口以及Android端向服务器请求数据
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5056780.html 讲解下java服务器是如何对移动终端提供接口的,以什么数据格式提供出去,移动端又是怎么 ...
- Android Service完全解析,关于服务你所需知道的一切(下)
转载请注册出处:http://blog.csdn.net/guolin_blog/article/details/9797169 在上一篇文章中,我们学习了Android Service相关的许多重要 ...
- Android OkHttp完全解析 --zz
参考文章 https://github.com/square/okhttp http://square.github.io/okhttp/ 泡网OkHttp使用教程 Android OkHttp完全解 ...
- Android OkHttp完全解析 是时候来了解OkHttp了
Android OkHttp完全解析 是时候来了解OkHttp了 标签: AndroidOkHttp 2015-08-24 15:36 316254人阅读 评论(306) 收藏 举报 分类: [an ...
- Android端上传图片到后台,存储到数据库中 详细代码
首先点击头像弹出popwindow,点击相册,相机,调用手机自带的裁剪功能,然后异步任务类访问服务器,上传头像,保存到数据库中, 下面写出popwindow的代码 //设置popwindow publ ...
- 【转】Android Service完全解析,关于服务你所需知道的一切(下) ---- 不错
原文网址:http://blog.csdn.net/guolin_blog/article/details/9797169 转载请注册出处:http://blog.csdn.net/guolin_bl ...
- Android ListView分页载入(服务端+android端)Demo
Android ListView分页载入功能 在实际开发中经经常使用到,是每一个开发人员必须掌握的内容,本Demo给出了服务端+Android端的两者的代码,并成功通过了測试. 服务端使用MyEcli ...
- Android端恶意锁屏勒索应用分析
一.前言 5月12日,一场全球性互联网灾难悄然而至,一款名为WannaCRY的PC端恶意勒索软件利用NSA泄漏的危险漏洞“永恒之蓝”,给100多个国家和地区10万台电脑造成了巨大的损失.到2017年为 ...
- [转]Android Service完全解析,关于服务你所需知道的一切
目录(?)[+] Android Service完全解析,关于服务你所需知道的一切(上) 分类: Android疑难解析2013-10-31 08:10 6451人阅读 评论(39) 收藏 举报 ...
随机推荐
- PHP面向对象之接口 (interface)
1.使用接口,接口中指定了某个类必须实现的某些方法,这些方法都是空的(不需要定义这些方法的具体内容) 2. 要实现一个接口用关键字implements,类中必须包含接口中所有的方法,否则会出现一个致命 ...
- 使用 ssh 从 Gerrit 获取 patch 信息
使用命令行(ssh)对Gerrit进行查询, 官方地址:https://review.openstack.org/Documentation/cmd-query.html 程序例子 import os ...
- C#计算时间间隔的方法小结
初始化两个时间变量用于演示实例. DateTime dt1 = new DateTime(2013, 10, 13, 19, 15, 50); DateTime dt2 = new DateTime( ...
- 七个你无法忽视的Git使用技巧
与其他技术相比,Git应该拯救了更多开发人员的饭碗.只要你经常使用Git保存自己的工作,你就一直有机会可以将代码退回到之前的状态,因此就可以挽回那些你深夜里迷迷糊糊犯下的错误. 尽管这么说,Git的命 ...
- 算法笔记_093:蓝桥杯练习 Problem S4: Interesting Numbers 加强版(Java)
目录 1 问题描述 2 解决方案 1 问题描述 Problem Description We call a number interesting, if and only if: 1. Its d ...
- LoadRunner中调用SHA1算法加密字符串
参考<SHA-1 hash for LoadRunner>: http://ptfrontline.wordpress.com/2010/03/02/sha-1-hash-for-load ...
- unity3d移动及键鼠状态
gameObject的transform属性可以进行位置.旋转.大小的设置 位置:position,Translate(),位置的移动 旋转:rotate 大小:localScale Vector3内 ...
- 通过SectionIndexer实现微信通讯录
这里主要参考了使用SectionIndexer实现微信通讯录的效果 在这里做个记录 效果图 页面使用RelativeLayout,主要分为三个部分,match_parent的主listView,右边字 ...
- FIFO、LRU、OPT页面调度算法及样例
网上非常多介绍3种页面置换算法的样例和过程是不对的, 本文依据<操作系统概念>第七版对三种算法做介绍,并给出正确的样例以验证算法. 一.FIFO先进先出页面置换算法,创建一个FIFO队列来 ...
- [J2EE基础]初识JSP和Servlet
近期须要用到J2EE,就開始学习与J2EE相关的知识了. JSP是一种Javaserver端技术,它用于在网页上显示动态内容. Tomcat相关知识 JSP的运行过程 JSP的页面构成元素 JSP的凝 ...