前言:
之前项目一直使用RGPC,ProtocolBuffer在安装grpc的时候自动安装了。最近一个IM项目不用grpc,但是数据格式仍使用ProtocolBuffer,ProtocolBuffer文件编写,数据格式等这里就不说了,网上一搜一大把。这里就说说在项目集成使用过程中遇到一些坑,记录于下:
一.ProtocolBuffer环境安装,
按顺序在终端中执行
- /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- brew install automake
- brew install libtool
- brew install protobuf
安装完成后,在usr/local/lib 下可以看到

二.项目集成
1.通过cocoapods
OC项目:
pod 'ProtocolBuffers'
Swift项目:
use_frameworks!
pod 'ProtocolBuffers-Swift'
我这里用的OC,但是导入后运行时一直报错,提示ProtocolBuffer下面这个GPBProtocolBuffers_RuntimeSupport.h库文件找不到。查找了一下,pod导入的库中确实没有。
上github看了一下,ProtocolBuffers库这个已经一年多没更新了,好吧,只能手动导入了。(swift版的倒是持续更新着)
2.手动导入
1.下载:ProtocolBuffers下载地址
2.拷贝到项目文件夹下:
下载后解压,里面有不同语言的库,objectivec下是OC的全部PB源码。在项目中创建文件夹ProtocolBuffer,将objectivec下是OC的全部PB源码全部粘贴过去。

这里要注意只需要加入项目文件夹即可,不需要将ProtocolBuffer目录加入项目引用。(全部引用到项目可能会报错,因为里面有osx项目)
3.加入项目引用:
打开项目,在随意文件夹下,点击左下角加号按钮,add file to project

在上一步拷贝到项目中的ProtocolBuffer文件夹下找到ProtocolBuffers_iOS.xcodeproj,点击添加即可

添加完成后项目中如下

PB源文件里面的ProtocolBuffers_OSX.xcodeproj是macOS用的,这里不用管。
3.添加项目配置
- 在工程target->Build Settings-> Rez Search Path 设置$(PROJECT)/ProtocolBuffer
- 在工程target->Build Settings-> Header Search Path 设置$(PROJECT)/ProtocolBuffer
- 选中工程: targets —> Build Phases —> Link Binary With Libraries, 引用源码静态库文件:libProtocolBuffers.a
- 导入项目的proto文件如果报ARC错误,在工程target->Build Phrases->Compile Sources->给Person.pbobjc.m设置-fno-objc-arc,因为ProtocolBuffer还不支持ARC
注意:这里的路径是拷贝到项目文件夹中的ProtocolBuffer目录路径,并不是引入项目中ProtocolBuffers_OSX.xcodeproj的路径
至此,坑算是填完了。
附上参考:
https://blog.csdn.net/lovehalok/article/details/77852186
https://blog.csdn.net/lovehalok/article/details/77852186
网友评论