转载: iOS之ProtocolBuffer搭建和示例demo

简介: 原文地址:http://blog.csdn.net/long458/article/details/54693371这次搭建iOS的ProtocolBuffer编译器和把.

原文地址:http://blog.csdn.net/long458/article/details/54693371

这次搭建iOS的ProtocolBuffer编译器和把.proto源文件编译成.pbobjc.h 和 .pbobjc.m文件时,碰到不少问题!
搭建pb编译器到时没有什么问题,只是在把
.proto文件编译出来后,我用cocoaPods集成ProtocolBuffers到自己项目,
cocoaPods集成的时候,我尝试了两个库,一个是:
https://github.com/google/protobuf.Git
另外一个是:
https://github.com/alexeyxo/protobuf-objc.git
但是运行时都一直报错通过:
一会报ProtocolBuffer库文件找不到;
一会报版本不对:This file was generated by a different version of protoc which is incompatible with your Protocol Buffer library sources ;
一会报属性数据格式不存在,不匹配。

最后不得已只好放弃CocoaPods, 直接把从https://github.com/google/protobuf下载下来的库拖进工程里面,这样才OK了!
简单说下我这边pb编译器的安装过程,和编译后的使用demo:

一、环境安装:pb编译器的安装
1、从https://github.com/google/protobuf/releases下载protocolBuffer对应版本编译器包,比如目前的对应的objc最新版本
    下载地址为:https://github.com/google/protobuf/releases/download/v3.1.0/protobuf-objectivec-3.1.0.zip
  2、解压包,假设解压后的文件夹名为: protobuf-objectivec-3.1.0,     打开终端,进入文件夹protobuf-objectivec-3.1.0, 依次执行以下命令:
./configuremakemake checksudo make install

如果编译顺利的话,便可以使用protoc命令了,以后便可以用这个命令将.proto文件转换为不同语言的源代码文件。

二、创建新项目,导入pb库,编写proto文件编译,使用过程 1、从https://github.com/google/protobuf.git下载源码,解压,里面有支持不同语言的版本源码,
  我们只需要里面的支持objc的文件夹名为:objectivec,如图:
  

img_0f8216f25f6493715d3b5545177550f2.png

2、新建一个工程命名为Tan_ProtocolBuffer,创建一个文件夹,假设命名为:protocolbuf, 把第一步的pb源码复制到此文件夹中:

  
img_651b9e1656c3940143b9d153602eeaf1.png

3、使用Xcode打开工程,点击左下角“+”, 引用protocolBuffer源文件到工程中
  (源文件里面有两个工程配置文件:ProtocolBuffers_iOS.xcodeproj和ProtocolBuffers_OSX.xcodeproj,引用ProtocolBuffers_iOS.xcodeproj就好)

  
img_bab0f08f68132e5c61f237f48fa5a04b.png
img_17cbad555ca4f4ed68d181e687637ec8.png

4、选中工程: targets —> Build Phases —> Link Binary With Libraries, 引用源码静态库文件:libProtocolBuffers.a

  
img_4abc50a3e227048cf4a74a30ecfea140.png

5、在工程设置搜索静态库的头文件(pb文件在protocolbuf文件夹里面):
   targets —> Build Setting —> Search Paths —> Header Search Paths, 写入:$(PROJECT)/protocolbuf

  
img_52a3d6fe7501cfe0e74a0a1acf082c4b.png

6、编写测试文件.proto,比如新建一个文件Person.proto, 按照官方标准语法https://developers.google.com/protocol-buffers/ 编写通用代码,  写好后在终端进入该Person.proto文件所在目录,使用protoc命令:protoc .proto --objc_out=../Pro_out 进行编译。  把Person.proto文件编译成Person.pbobjc.h和Person.pbobjc.m, 生成的文件在Pro_out文件夹里面。  如果Person.proto源文件有语法问题,编译时会报错;当编译时什么提示都没有,表示编译成功:  将编译好的.pbobjc.h和.pbobjc.m拖入工程中,因为不支持arc, 所以需要在*.pbobjc.m设置-fno-objc-arc, 然后就可以使用了。
  截图如下:  
   

img_6d7f42f70d658c3ca8aa55ee1cc07081.png

img_e6d0eb46d39cd42dea4622e8206e9ae2.png
    ![](http://upload-images.jianshu.io/upload_images/1293851-7dbc1e8b34f2e1b1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   
img_da8bcb6c45814c6598f74206df25ddfd.png
 ![](http://upload-images.jianshu.io/upload_images/1293851-28ccd3f34f77c698.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

7、编写测试代码,使用Person类进行数据序列化和反序列:
  

img_343437918f7286df4e8b5b659a76cc9a.gif

示例demo下载地址: https://github.com/xiaotanit/Tan_ProtocolBuffer

原文链接:http://www.cnblogs.com/tandaxia/p/6181534.html

目录
相关文章
|
6月前
|
语音技术 开发工具 图形学
Unity与IOS⭐一、百度语音IOS版Demo调试方法
Unity与IOS⭐一、百度语音IOS版Demo调试方法
|
iOS开发
iOS 多个滚动控件嵌套Demo
iOS 多个滚动控件嵌套Demo
90 0
|
iOS开发
iOS UIKit Dynamics Demo 学习地址列表
iOS UIKit Dynamics Demo 学习地址列表
66 0
倒计时15分钟-兼容ios手机效果demo(整理)
倒计时15分钟-兼容ios手机效果demo(整理)
|
JSON 测试技术 Android开发
基于AirTest+Python的ios自动化测试demo(微信朋友圈无限点赞)
AirTest相比Appuim有个好处就是可以对GUI图片进行捕捉和最新版本支持WebView(目前Appuim不支持iOS12的WebView进行Xpath抓取)
660 0
|
测试技术 iOS开发 Python
基于Python+appium的ios自动化测试demo(更新中)
appium环境搭建可参考以下两个链接: www.jianshu.com/p/a2b79cd8b… www.jianshu.com/p/3c04e029c…
480 0
|
Java 图形学 Android开发
Android/iOS内嵌Unity开发示例
Android/iOS内嵌Unity开发示例
562 0
Android/iOS内嵌Unity开发示例
|
iOS开发
iOS项目环境基本搭建
iOS项目环境基本搭建
133 0
iOS项目环境基本搭建
|
算法 iOS开发 计算机视觉
iOS 图像处理 + 人脸检测相关示例 🤖
Faceu脸萌一定是有一套自己的核心算法,所以它会说“有人模仿我的脸...” 最近在研究一些图像处理的技术,其中最常见的应用就要数 “Faceu 脸萌” 了,为了展示更清晰,我选择拆分功能的方式来实现 Demo。
200 0
iOS 图像处理 + 人脸检测相关示例 🤖
|
移动开发 Android开发 iOS开发
iOS 模块化之 JLRoute 路由示例 🤖
基于 JLRoute 实现的模块化示例,包括链接跳转原生页面、WebView页面和ReactNative页面 🤖 模块化已经成为调剂庞大项目结构的一剂良药,对项目的开发、维护和后续的扩展的好处已经不言而喻。
431 0
iOS 模块化之 JLRoute 路由示例 🤖

热门文章

最新文章

  • 1
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 3
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 6
    iOS8 中无需开源库的内置功能一览
  • 7
    iOS7应用开发7:自定义视图、手势操作
  • 8
    IOS小工具以及精彩的博客
  • 9
    Facebook SDK(iOS)初学讲解
  • 10
    iOS - Swift NSPoint 位置
  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    14
  • 2
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    28
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    34
  • 4
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 5
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 6
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
    143
  • 7
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
    235
  • 8
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
    90
  • 9
    深入探索iOS开发中的SwiftUI框架
    145
  • 10
    ios样式开关按钮jQuery插件
    60