android 中使用protocolbuffer

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)上都是可以直接搜到:這里我只是單純的放出我的代碼示例,看著這個例子應該會明白好多


(1)import 導入

? ? (2)類之間的嵌套

(3)請求參數(shù)為list

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



請求成功后把得到的結果數(shù)組利用.parseFrom(),轉化為我們需要的對象就可以了
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容