您的位置:首页 > Web前端

Google Protocol Buffer的基本配置与使用

2016-11-14 15:35 459 查看
    前段时间需要做紧凑排列的二进制数据的序列化与反序列化,老大让我研究谷歌的pb,尝试使用pb来做这些,说相对而言耦和性比较小,然后我就研究了下这个东西。    1.首先要知道pb具体是什么     Protocol buffers是一个灵活的,高效的,有自动机制(可能指编解码)工具用于序列化结构数据。类似XML,但是更小、更快、更简单。你定义你的结构化数据,然后就可以使用工具生成的你需要的语言的代码,从各种数据流中读写你的结构化数据。如果还是有不明白的就自己去谷歌了。(我简单的理解,是将规定形式排列的二进制数据进行序列化和反序列化工具)    2.安装代码生成工具    2.1 首先下载源代码:https://github.com/google/protobuf    2.2 编译重要的代码生成工具使用 HomeBrew 安装:$ brew install autoconf$ brew install automake$ brew installlib tool然后运行
脚本
$ ./autogen.sh
$ ./configure
$ make
#
如果希望安装protoc,执行下面的命令
$ make
install
3.将源代码中的oc的文件打包成一个静态库或者frmework放进项目中使用,也可以直接将这个文件夹(将objectivec文件夹下的所有的.h文件和.m文件,除了GPBProtocolBuffers.m)拖到项目中使用。
3.1设置header search pathstargets--->build settings ---->headersearch paths设置 $(SRCROOT)/objectives3.2 pb考虑性能没有使用arc,所以要将框架中的.m文件都设置为非arc的。targets--->build phases ------>compile  source中的.m设置为-fno-objc-arc.4.PB 的使用如果上面编译没有错误,下面就可以正式的使用pb了。具体使用如下4.1 新建文件夹和.proto文件。4.1.1新建文件夹如下gen文件夹主要装生成的目标文件protocols文件夹主要装.proto文件4.1.2 .proto文件的具体格式。在.proto文件里首先确定文件的格式版本,总共有两个版本。proto3比proto2要更新,两者有稍微区别,具体两个版本的文件格式建议参照官网:https://developers.google.com/protocol-buffers/docs/proto4.2 .使用PB编译器编译.proto文件  在终端输入protoc --proto_path=... --objc_out=... XXX.proto  --proto_path对应的是.proto文件文件夹(protocols文件夹)的路径。  --objc_out是生成模型文件夹(gen)路径。  XXX.proto是.proto路径。  执行命令会在gen文件夹下生成模型文件,将文件添加到项目中,并将.mComplier Flags设为-fno-objc-arc。(protobuf基于性能原因没有使用ARC) 4.3.在项目中使用PB完成序列化&反序列化示例如下:// 创建对象Person *person = [Person new];person.name = @"TanHao";person.uid = 28;    // 序列化为DataNSData *data = [person data];    // 反序列化为对象Person *person2 = [Person parseFromData:data error:NULL];NSLog(@"name:%@ sex:%d age:%d",person2.name,person2.sex,person2.age);由于写这个文章时我已经做完这个有段时间了,其实在开始安装代码生成工具时在终端遇到不少问题,建议大家在官方推荐的地址下载最新的pb然后在进行配置,有问题欢迎留言交流。我的两个pb的demo,一个大成framework了,一个直接使用的,打成framework的已经上传,地址如下:https://github.com/Jing2684/ProtocolBuffersDemo    
        
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息