iOS下 安裝Protobuf(ProtocolBuffers)的詳細步驟,解決網上出現的所有問題
Protobuf是什麼?
Protobuf 即 google protocol buffer 是一種資料封裝格式協議,是google推出
的一種語言無關、平臺無關、擴充套件性好的用於通訊協議、資料儲存的結構化資料序列化方法。支援
C++、Python、Java三種語言。
為什麼要使用Protobuf?
在不同平臺通訊的時候,首先需要將物件進行序列化。iOS平臺上我們常用NSKeyedArchiver進行
歸檔,當然也可以將資料處理為JSON或者XML格式。NSKeyedArchiver只能在iOS/Mac平臺使用,
因此它歸檔的二進位制資料不適合於在不同平臺之間使用。JSON和XML雖然由於容易維護,易讀而應用
比較廣泛,但是對資料的利用效率都不是高。這時候該使用Protobuf了,因為Protobuf的優勢是
效率高,同樣的一份資料使用protobuf儲存的時候更小,更加方便
安裝步驟如下:
一.安裝環境
1.開啟終端
2.檢視你的mac上是否安裝了brew
$ brew -v
Homebrew 1.6.8
Homebrew/homebrew-core (git revision d822; last commit 2018-06-12)
這是表明已經安裝,如果沒有安裝,使用下面的命令安裝下
3.安裝brew (使用ruby安裝)
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/
Homebrew/install/master/install)"
4.下載依賴庫(工具)
$ brew install automake
$ brew install libtool
5.下載Protobuf
$ brew install protobuf
6.克隆protobuf-objc,也就是說吧程式碼下載到本地
$ cd desktop 我是clone到桌面,你們可以隨便放那
$ git clone https://github.com/alexeyxo/protobuf-objc.git
7.執行指令碼
$ cd ~/protobuf-objc 切換到clone的目錄
$ ./scripts/build.sh
或者這樣
$ ./autogen.sh
$ ./configure
$ make
# 如果希望安裝protoc,執行下面的命令
$ make install
編譯後報錯:In file included from objc_helpers.cc:27:./google/protobuf/
objectivec-descriptor.pb.h:17:2: error: This file was generated by
an older version of protoc which is
#error This file was generated by an older version of protoc which is
^
./google/protobuf/objectivec-descriptor.pb.h:18:2: error: incompatible with your
Protocol Buffer headers. Please
#error incompatible with your Protocol Buffer headers. Please
^
./google/protobuf/objectivec-descriptor.pb.h:19:2: error: regenerate this file
with a newer version of protoc.
#error regenerate this file with a newer version of proton.
......
出現這樣的錯誤,不要慌,這是google自己版本的問題,我們不用管他,而且也不會像其他文章說的那
樣,生成protoc-gen-objc這個外掛,根本就不會生成,除非版本是2.6.0,這個問題採用下面的方式
一樣能生成proto檔案
二.生成字尾proto的檔案
說明: 建立 proto 檔案指定資料格式,可以選擇proto2和proto3格式,它們有些細微的區別,在生成程式碼的時候會提示的,具體情況檢視文件Language Guide proto3。下面使用proto3格式,並且儲存為person.proto。
1. 建立檔案person.proto
$ cd desktop 我還是切換到桌面
$ touch person.proto
2. 編輯person.proto檔案
2.1 使用終端編輯
$ vi person.proto
syntax = "proto3";
message Person{
string name = 1;
int32 age = 20;
enum DeviceType{
iOS = 0;
Android = 1;
}
}
2.2 放到xcode中直接寫(推薦)
三.轉化成objc檔案
由於我們生成不了protoc-gen-objc,因此使用
protoc --plugin=/usr/local/bin/protoc-gen-objc --objc_out=./ person.proto這種方式是不行的
我們使用 protoc 工具生成Objective-C程式碼:
終端輸入: $ protoc --proto_path=A --objc_out=B person.proto
其中--proto_path=後跟A是需要處理的proto檔案所在的資料夾,--objc_out=指明生成的是
Objective-C程式碼以及目標檔案存放路徑,B是目標檔案存放路徑,person.proto是需要處理的檔案。
這時候我們就生成了2個檔案,如下圖
匯入工程中,這兩個檔案是採用的手動引用計數,因此在加入專案後需要設定它們的編譯引數。
四.專案使用 (下載Protocol Buffers的原始碼(下載地址),也可以到官網上下載)
1.使用cocoapods方式匯入
pod 'Protobuf' 而不是 pod 'ProtocolBuffers',
使用 pod 'ProtocolBuffers'
下載成功之後,編譯一看,結果報錯
#import "GPBProtocolBuffers_RuntimeSupport.h"無法找到
原因是pods下來的是不帶GPB的,所以網上說的不對,應該是用
pod 'Protobuf' ,這樣就沒有問題
2.靜態庫引入方式
1.下載Protocol Buffers的原始碼
2.工程裡引入ProtocolBuffers_iOS.xcodeproj,或者編譯成靜態庫.a方式,然後公開標頭檔案(如圖2)
3.設定依賴和連線庫。(如圖3)
4.引入標頭檔案(如圖4)
參考文章
https://my.oschina.net/kgdugyiy/blog/538333 安裝和使用
https://developers.google.com/protocol-buffers/ 語法方面
https://github.com/google/protobuf/blob/master/src/README.md 官網教程
至於如何使用,下期文章會詳細介紹,並提供demo,喜歡的,點下贊,謝謝!
相關文章
- CentOS 7.4下安裝nginx的詳細步驟CentOSNginx
- MySQL的安裝步驟(詳細)MySql
- CentOS 7上安裝WordPress詳細步驟CentOS
- centos下svn的安裝及配置詳細步驟CentOS
- CentOS 6.5下Redis安裝詳細步驟CentOSRedis
- CentOS7上安裝WordPress詳細步驟CentOS
- Linux安裝jdk的詳細步驟。LinuxJDK
- Linux安裝jdk的詳細步驟LinuxJDK
- Protobuf java版本安裝步驟Java
- vnc安裝步驟,vnc安裝步驟詳解VNC
- docker安裝portainer詳細步驟DockerAI
- UBUNTU手動安裝JDK的詳細步驟UbuntuJDK
- Mac安裝Redis,詳細redis安裝步驟MacRedis
- IN2003下JDK的詳細安裝配置步驟JDK
- 【安裝】Windows下Oracle安裝圖解----oracle-win-64-11g 詳細安裝步驟WindowsOracle圖解
- CentOS 7 安裝MongoDB詳細步驟CentOSMongoDB
- 安裝fbprophet模組詳細步驟
- Linux安裝JDK詳細步驟LinuxJDK
- FreeBSD系統下安裝字型的步驟詳解
- centos7安裝教程詳解 centos7安裝詳細步驟CentOS
- Oracle9i的詳細安裝與解除安裝步驟(有圖解)Oracle圖解
- Nagios的安裝步驟iOS
- IOS之GCD詳細步驟iOSGC
- ghost win10安裝教程詳細步驟圖解Win10圖解
- Linux下最新版MySQL 8.0的下載與安裝(詳細步驟)LinuxMySql
- CentOS 7.4安裝redis 4.0詳細步驟CentOSRedis
- arcgis安裝教程10.2 arcgis詳細安裝步驟
- Flutter-安裝步驟及安裝遇到的問題Flutter
- linux下安裝redis圖文詳細步驟鶯瞵LinuxRedis
- 下載並安裝libevent開發庫詳細步驟
- windows下安裝laravel簡單步驟以及碰到的問題WindowsLaravel
- Scala的安裝以及建立Scala專案的詳細步驟
- 最新最詳細步驟介紹iOS APP上架iOSAPP
- DKhadoop安裝配置步驟教程與常見問題解決Hadoop
- 轉貼:上週ORACLE RAC培訓時的安裝RAC的詳細步驟(一)Oracle
- 轉貼:上週ORACLE RAC培訓時的安裝RAC的詳細步驟(三)Oracle
- 轉貼:上週ORACLE RAC培訓時的安裝RAC的詳細步驟(二)Oracle
- 轉貼:上週ORACLE RAC培訓時的安裝RAC的詳細步驟(五)Oracle