ProtocolBuffers-3.0.0 For Objective C 的快速集成指南

来源:互联网 发布:公寓租房软件 编辑:程序博客网 时间:2024/04/30 22:38

一 、前言

最近调研 Google的Protocol Buffer。在网上看了几篇相关博客,发现他们讲的都比较复杂 ,所以就想写一篇简单点的文章。 

配置环境:mac OS 10.11.5  &  Xcode7.3 


二 、Protocol Buffer简介

Protocolbuffer(简称Protobuf或PB)是由Google推出的一种数据交换格式,它独立于语言,独立于平台。Google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。与传统的XML和JSON不同的是,它是一种二进制格式,免去了文本格式转换的各种困扰,并且转换效率非常快,由于它的跨平台、跨编程语言的特点,让它越来越普及,尤其是网络数据交换方面日趋成为一种主流。

PB目前托管在GitHub,链接地址:https://github.com/google/protobuf,源码的主要功能可以分为两部分:

PB基础库:完成对象->二进制数据的序列化、二进制数据->对象的反序列化这两个转换过程的支持;
PB编译器:源码生成器,将PB格式定义文件。proto(PB数据格式的一种定义文件)转换为对象源码(支持C++,JAVA,Python等格式)。

截止目前PB的最新版本为3.0.0-beta-2,已经加入了对Objective-C的支持(其它之前低版本中也已经有OC扩展支持)。


三、下载并安装代码生成器protoc 3.0.0-beta-3.1

请不要直接用  brew 安装protoc ,brew 安装的版本是 当前的 发布版本 2.6.0 发布版不支持objective c 

(装个插件就可支持objective c 但是仍然有问题,比如不支持 option objc_class_prefix = "QZG"; 


下载页面链接:

https://github.com/google/protobuf/releases

打开页面并下载 64位 os x 版本如图





下载完成后解压得到如下目录




将 protoc 可执行程序 放到   /usr/local/bin/  目录下 即安装完成


四、使用protoc利用 .proto 生成代码

使用 protoc 程序将 .proto 文件范例Persion.proto 转化成 Objective C类文件,文件内容如下

protoc 文件的编写规则请参考:http://blog.csdn.net/xiaofei125145/article/details/51859791

syntax = "proto2";option objc_class_prefix = "QZG";message Person {repeated uint32 myfield = 1;}message ExampleObject {repeated double example_field = 7;}


终端执行过程如下: 可以看到我的   Persion.proto  文件

ZhiGuangdeMini:message Wangdy$ pwd/Users/zhiguangqiao/Desktop/messageZhiGuangdeMini:message Wangdy$ lsPersion.protoZhiGuangdeMini:message Wangdy$ proto Persion.proto --objc_out="./"-bash: proto: command not foundZhiGuangdeMini:message Wangdy$ protoc Persion.proto --objc_out="./"ZhiGuangdeMini:message Wangdy$ lsPersion.pbobjc.hPersion.pbobjc.mPersion.protoZhiGuangdeMini:message Wangdy$ 


执行完之后 可以看到多了如下两个文件  ,即 Objective c 类文件 ,注意 这是 MRC 的不支持 ARC

别忘了配置 -fno-objc-arc

Persion.pbobjc.hPersion.pbobjc.m



创建Demo 工程并将上面两个文件添加到工程中编译会报错,提示找不到文件 ,因为还没有配置protobuf运行时环境。



五、安装 ProtocolBuffer 运行时环境

运行时环境是可以 直接通过 Pod 安装的 ,如果没有安装 Pod 请自行安装 


创建Demo工程

cd 到工程目录下 执行 pod init 

pod init 会生成 Podfile 文件

执行pod search命令

pod search protobuf


搜索结果中第一条就是 如下

-> Protobuf (3.0.0-beta-3.1)   Protocol Buffers v.3 runtime library for Objective-C.   pod 'Protobuf', '~> 3.0.0-beta-3.1'   - Homepage: https://github.com/google/protobuf   - Source:   https://github.com/google/protobuf.git   - Versions: 3.0.0-beta-3.1, 3.0.0-beta-3, 3.0.0-beta-2, 3.0.0-alpha-4.1, 3.0.0-alpha-3 [master repo]


将下面的 这行 文本添加到 工程中的 Podfile 内,然后 pod install 即可
pod 'Protobuf', '~> 3.0.0-beta-3.1'


pod install 完成后,会生成一个 .xcworkspace 后缀的 文件 ,关闭原来的 xcode 工程, 并打开 .xcworkspace ,编译通过 





1 0
原创粉丝点击