1. 程式人生 > >iOS ProtocolBuffer 最新操作記錄以及“'GPBProtocolBuffers_RuntimeSupport.h' file not found”等問題解決

iOS ProtocolBuffer 最新操作記錄以及“'GPBProtocolBuffers_RuntimeSupport.h' file not found”等問題解決

ProtocolBuffer最新操作記錄

概述

Protocol Buffer(簡稱PB)是Google出品的一種輕量 & 高效的結構化資料儲存格式(詳細原理Google下即可)。

使用總結

  • 相比常用Json和XML,效能更好(資料更小、結構更合理、資料交換更快);
  • 最重要的是使用PB,對開發者設計資料結構的過程有很好的提示規範作用(個人體會��)。

Mac下環境搭建

提示:搭建環境前請FQ下(各位懂得!)。

  • 安裝HOMEBREW(已安裝跳過),開啟終端輸入指令:
    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  • Protocol Buffer 安裝包,連結:https://github.com/google/protobuf/releases

  • 主要介紹iOS端,故下載protobuf-objectivec-3.4.0.tar.gz(當前最新),將壓縮包解壓,放在合適的地方;

  • 在終端輸入,brew install autoconf automake libtool curl指令;

  • 在終端,cd進解壓包protobuf-objectivec-3.4.0檔案;

  • 輸入./autogen.sh,執行指令碼(此處需FQ,載入資源);

  • 輸入./configure,執行指令碼;

  • 輸入make,編譯;

  • 輸入make check,檢查依賴包是否完整,終端會輸出7個檢查項,都顯示pass即可;

  • 輸入make install,安裝PB;

  • 輸入proto --version不報錯,輸出版本資訊,即可。

生成.h、.m檔案

  • 使用終端cd到存放.proto檔案的資料夾(事先建立好);

  • 輸入touch Person.proto命令;

  • 輸入vim Person.proto,按i進入編輯狀態,按照PB語法設計資料,示例:

    syntax = "proto3";//預設是proto2,二者區別,可查閱PB文件
    
    message Person {
        string name = 1;
        string age = 2;
    }
    
  • Esc:wq回車,在輸入protoc --plugin=/usr/local/bin/protoc-gen-objc Person.proto --objc_out="./"

    ,如果沒有語法或其他異常,請前往資料夾檢視生成的.h.m檔案。

  • 在工程target->Build Phrases->Compile Sources->給Person.pbobjc.m設定-fno-objc-arc.

匯入工程(手動)

  • 在上面protobuf-objectivec-3.4.0.tar.gz解壓包裡面拷貝objectivec資料夾下面的全部原始碼檔案,貼上到工程建中名為ProtocolBuffer的資料夾(事先建立);

  • 點按Xcode左下角+Add a new file ,點選Add Files To 你的工程名字,在彈出的檔案搜尋介面,進入上一步存放PB原始碼的ProtocolBuffer資料夾,選中ProtocolBuffers_iOS.xcodeproj並新增至工程(另外一個ProtocolBuffers_OSX.xcodeproj,不用理會,嘗試匯入,xcode8.3會崩潰);

  • 在工程target->Build Phrases->Compile Sources->Link Binary With Libraries新增libTestSingleSourceBuild.a靜態庫

  • 在工程target->Build Settings-> Rez Search Path 設定$(PROJECT)/ProtocolBuffer

  • 在工程target->Build Settings-> Header Search Path 設定$(PROJECT)/ProtocolBuffer

問題

  • 關於GPBProtocolBuffers_RuntimeSupport.h等檔案找不到的問題?

    剛開始使用cocoapods匯入PB到工程,發現每次它匯入的版本為1.9.11版本,與下載最新版本PB相比確實少了很多檔案,最後便改為手動匯入。
    
  • 關於GPBProtocolBuffers_RuntimeSupport.h等檔案在工程中確實存在,但編譯時任然提示找不到檔案?

    老問題,參照上面“匯入工程”最後兩個步驟,保證路徑設定正確。
    
  • 關於拖進工程.h和.m檔案不支援ARC問題?

    參照上面“生成.h和.m檔案”最後一步。