iOS集成ProtocolBuffer遇到的问题

前言:

之前项目一直使用RGPC,ProtocolBuffer在安装grpc的时候自动安装了。最近一个IM项目不用grpc,但是数据格式仍使用ProtocolBuffer,ProtocolBuffer文件编写,数据格式等这里就不说了,网上一搜一大把。这里就说说在项目集成使用过程中遇到一些坑,记录于下:

一.ProtocolBuffer环境安装,

按顺序在终端中执行

  1. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. brew install automake
  3. brew install libtool
  4. brew install protobuf

安装完成后,在usr/local/lib 下可以看到


图片.png

二.项目集成

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源码全部粘贴过去。


图片.png

这里要注意只需要加入项目文件夹即可,不需要将ProtocolBuffer目录加入项目引用。(全部引用到项目可能会报错,因为里面有osx项目)

3.加入项目引用:

打开项目,在随意文件夹下,点击左下角加号按钮,add file to project


图片.png

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


图片.png

添加完成后项目中如下
图片.png

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,025评论 3 119
  • 最近网上关于三伏天跑步的文章很多,根据自己亲身跑步的情况,我也写了一篇题为《三伏天选择晨跑》的文章,这篇文章是针对...
    ZHANGAQ阅读 306评论 0 0
  • 我有一床神奇的被子,冬天盖着不冷,夏天盖着不热!
    违愿阅读 206评论 4 1
  • 圈友分享 Sonia: 陪客户探索“不可能完成的任务”时的觉察: 教练内在的关注点是接受不可能之后的失败还是探索不...
    ElynLiu阅读 232评论 0 0