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檔案”最後一步。