1.什么是protobuf?
關于protobuf 網(wǎng)上都能搜到復制一段看下:Protocol Buffers 是一種輕便高效的結構化數(shù)據(jù)存儲格式,可以用于結構化數(shù)據(jù)串行化,或者說序列化。它很適合做數(shù)據(jù)存儲或 RPC 數(shù)據(jù)交換格式。可用于通訊協(xié)議、數(shù)據(jù)存儲等領域的語言無關、平臺無關、可擴展的序列化結構數(shù)據(jù)格式。目前提供了 C++、Java、Python 三種語言的 API。文字看著空洞不實在,來點干的,我們公司之所以使用protobuf而不用json就是傳輸效率的問題,由于自己水平有限,之前也沒有了解過這個解析方式,所以、花費了一周的時間才能真正運用它,這里寫出來希望能多少幫助其他人。
2.安裝接入
安裝可以直接去官網(wǎng)下載安裝,https://developers.google.com/protocol-buffers/docs/downloads
也許是我在網(wǎng)上找到的資源都是前輩寫的,很多使用方式與我現(xiàn)在的不一樣,我這里放出我使用的方式:
首頁build中導入:與Android 平級導入,我這里使用的是3.0.0,這個版本可以使用map字段,2.5.0的不可以
配置Gradle
no1項目的build.gradle文件加入:
classpath'com.google.protobuf:protobuf-gradle-plugin:0.8.0'

no2、模塊的build.gradle
頂部添加protobuf插件
apply plugin:'com.google.protobuf'
android結點增加proto文件位置配置

sourceSets {? ? ? ? main {? ? ? ? ? ? proto {? ? ? ? ? ? ? ? srcDir'src/main/proto'include'**/*.proto'}? ? ? ? ? ? java {? ? ? ? ? ? ? ? srcDir'src/main/java'}? ? ? ? }? ? }
no3.添加依賴

compile'com.google.protobuf:protobuf-java:3.1.0'
compile'com.google.protobuf:protoc:3.1.0'
增加protobuf結點

protobuf {? ? protoc {? ? ? ? artifact ='com.google.protobuf:protoc:3.1.0'}? ? generateProtoTasks {? ? ? ? all().each { task ->? ? ? ? ? ? task.builtins {? ? ? ? ? ? ? ? remove java? ? ? ? ? ? }? ? ? ? ? ? task.builtins {? ? ? ? ? ? ? ? java {}// Add cpp output without any option.// DO NOT omit the braces if you want this builtin to be added.cpp {}? ? ? ? ? ? }? ? ? ? }? ? }? ? generatedFilesBaseDir ="$projectDir/src/generated"}
3 正式使用
語法說明略》》》
在使用前一定是要先了解語法的,這個網(wǎng)上都是可以直接搜到:這里我只是單純的放出我的代碼示例,看著這個例子應該會明白好多

? ? (2)類之間的嵌套


具體貼出一個怎么使用,按照建造者模式創(chuàng)建請求的,我項目使用的是okhttp,,這段代碼是把所有的請求參數(shù)轉化為byte[]

