天天看點

轉載: iOS之ProtocolBuffer搭建和示例demo

原文位址: 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, 直接把從

下載下傳下來的庫拖進工程裡面,這樣才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,如圖:

  

轉載: iOS之ProtocolBuffer搭建和示例demo
2、建立一個工程命名為Tan_ProtocolBuffer,建立一個檔案夾,假設命名為:protocolbuf, 把第一步的pb源碼複制到此檔案夾中:
轉載: iOS之ProtocolBuffer搭建和示例demo

3、使用Xcode打開工程,點選左下角“+”, 引用protocolBuffer源檔案到工程中

  (源檔案裡面有兩個工程配置檔案:ProtocolBuffers_iOS.xcodeproj和ProtocolBuffers_OSX.xcodeproj,引用ProtocolBuffers_iOS.xcodeproj就好)

轉載: iOS之ProtocolBuffer搭建和示例demo
轉載: iOS之ProtocolBuffer搭建和示例demo
4、選中工程: targets —> Build Phases —> Link Binary With Libraries, 引用源碼靜态庫檔案:libProtocolBuffers.a
轉載: iOS之ProtocolBuffer搭建和示例demo

5、在工程設定搜尋靜态庫的頭檔案(pb檔案在protocolbuf檔案夾裡面):

   targets —> Build Setting —> Search Paths —> Header Search Paths, 寫入:$(PROJECT)/protocolbuf

轉載: iOS之ProtocolBuffer搭建和示例demo
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, 然後就可以使用了。

  截圖如下:  

   

轉載: iOS之ProtocolBuffer搭建和示例demo
轉載: iOS之ProtocolBuffer搭建和示例demo

![](http://upload-images.jianshu.io/upload_images/1293851-7dbc1e8b34f2e1b1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   
           
轉載: iOS之ProtocolBuffer搭建和示例demo
![](http://upload-images.jianshu.io/upload_images/1293851-28ccd3f34f77c698.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
           

7、編寫測試代碼,使用Person類進行資料序列化和反序列:

轉載: iOS之ProtocolBuffer搭建和示例demo

示例demo下載下傳位址:

https://github.com/xiaotanit/Tan_ProtocolBuffer

原文連結:

http://www.cnblogs.com/tandaxia/p/6181534.html https://link.jianshu.com?t=http://blog.csdn.net/long458/article/details/54693371# https://link.jianshu.com?t=http://blog.csdn.net/long458/article/details/54693371# https://link.jianshu.com?t=http://blog.csdn.net/long458/article/details/54693371# https://link.jianshu.com?t=http://blog.csdn.net/long458/article/details/54693371# https://link.jianshu.com?t=http://blog.csdn.net/long458/article/details/54693371# https://link.jianshu.com?t=http://blog.csdn.net/long458/article/details/54693371#

繼續閱讀