iOS之ProtocolBuffer搭建和樣本demo,iosprotocolbuffer

來源:互聯網
上載者:User

iOS之ProtocolBuffer搭建和樣本demo,iosprotocolbuffer

     這次搭建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,

  

 

  2、建立一個工程命名為Tan_ProtocolBuffer,建立一個檔案夾,假設命名為:protocolbuf, 把第一步的pb源碼複製到此檔案夾中:

  

 

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

      

   

  4、選中工程: targets —>  Build Phases  —>  Link Binary With Libraries, 引用源碼靜態庫檔案:libProtocolBuffers.a

  

 

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

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

  

 

  

  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, 然後就可以使用了。

  如下:  

    

 

    

 

           

 

   

 

     

 

 

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

  

樣本demo:https://github.com/xiaotanit/Tan_ProtocolBuffer

 

原文連結:http://www.cnblogs.com/tandaxia/p/6181534.html 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.