Protobuf简介
Protocol Buffer是google 的一种数据交换的格式,已经在Github开源,目前最新版本是3.5.0。它独立于语言,独立于平台。google 提供了多种语言的实现:Java、C#、C++、Go和Python,Objective-C,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 XML 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
说明
protobuf3.0.0以上才官方支持Objective-C,低于3.0.0的请忽略或使用第三方转换工具
开发环境:32bit & 64bit iOS, 64bit OS X,Xcode7.0+
基于性能原因没有使用ARC,但可以被ARC代码调用
步骤
转换:将我们编写好的XXX.proto文件转成Objective C文件,也就是XXX.h和XXX.m文件,转换的工具是使用protoc这种二进制文件来生成的,这文件需要自己生成,稍后会介绍如何使用它来转换Objective-C文件
集成:如果在iOS项目中加入protobuf库以及步骤1生成的OC文件
转换
生成protoc
如果没有装autoconf automake libtool需要先装这几个,这里使用brew来安装,在shell执行 brew install autoconf automake libtool即可,如果没有brew请自行先安装brew。
下载面向Objective-C的protobuf库,地址为(https://github.com/google/protobuf/releases),要下载对应Objective-C的版本比如 protobuf-objectivec-3.5.0.zip,解压。
cd到下载的目录,依次执行:
$ ./autogen.sh 获取GoogleMock,并生成对应的configure脚本
$ ./configure 进行环境检测,并生成对应的makefile或Makefile(--prefix=/usr/local可以指定安装路径,可以不指定使用默认的)
$ make 按照makefile编译工程
$ make check
$ sudo make install 执行makefile里面的install部分,进行安装(--prefix=/usr/local可以指定安装路径,可以不指定使用默认的)
终端中执行:protoc --version
如果出现libprotoc 3.5.0则说明安装成功
错误解决方案:
make 后报如下错误: 运行 autoreconf -ivf 即可
libtool: Version mismatch error. This is libtool 2.4.6, but the
libtool: definition of this LT_INIT comes from libtool 2.4.2.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.6
libtool: and run autoconf again.
如何卸载protobuf
在终端执行
1. which protoc
注:whick protoc后会出现一个路径,一般是 /usr/local/bin/protoc
这里默认称 /usr/local/bin/protoc为protoc_path
2. sudo rm 第一步中protoc_path
注:一般是sudo rm /usr/local/bin/protoc
即可完成卸载