本文记录一下在android上使用protocol buffer 作为通讯数据格式的记录。IDE eclipse
Google 源码 github
- 序列化/反序列化时效快
- 体积小(数量级的变化)
- 可读性差(序列化之后变成了字符串,完全不可读)
- 需要第三方参与编译和自动生成(协议结构需改变时,需重新生成)
- 库文件不得不包含,很多高级功能其实并用不到,xml & json 可以自己解析,支持本工程即可
环境说明
- for android
- on mac (pro , OS X)
- eclipse
- mac 安装 brew ( homebrew )
brew 官网
现行安装命令 : /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" (需 ruby 环境) - brew 安装 protobuf (三个命令均需执行) brew install automake brew install libtool brew install protobuf
- 安装完毕后验证 protoc --version
- 编辑.proto文件
- 使用命令行自动生成.java 文件 protoc ./filename.proto --java_out=./ 6.该Java文件copy至工程中,手动修改包名 link warming( if necessary)
- Android工程中引用的jar包版本需与mac中protoc 版本匹配,如执行 protoc --version 显示 2.6.1 则在工程中需引用v2.6.1jar包(否则可能会引起类库不匹配,无法编译)
- 包名可修改,filename.proto最好放置工程src目录下,如此就可方便在命令行下直接将.java文件输出到对应的包下
不放置也可,生成.java文件后,copy至对应的包名再修改.java文件的包名即可 - 序列化后的数据可以直接使用messageName.toByteArray()得到