日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

protobuf android 编译,Android 中protobuf 的安装,编译和使用

發布時間:2023/12/20 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 protobuf android 编译,Android 中protobuf 的安装,编译和使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前端時間使用到了protobuf來與后臺交互,網上的介紹也不是很全面,現在特地記錄一下。希望對大家都有幫助。

官網地址

1、如何寫一個.proto的文件

這個你可以看上面的官網,里面這個介紹的還是可以。當然如果你牛掰,直接讓后臺給你寫好。那也沒有問題,我這里就只粘一個簡單的proto文件。

message Person {

required string name = 1;

required int32 id = 2;

optional string email = 3;

enum PhoneType {

MOBILE = 0;

HOME = 1;

WORK = 2;

}

message PhoneNumber {

required string number = 1;

optional PhoneType type = 2

}

repeated PhoneNumber phone = 4;

}

里面哪些屬性的含義,都請各位看官去官網看吧,這里就不寫了。

2、將proto文件編譯成java文件

1、你需要下載prtobuf安裝包。

這里講解一下windows的安裝。官網下載地址選擇里面的win32下載。下載完成之后解壓就OK了。

2、編譯文件

protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/addressbook.proto

SRC_DIR:是指proto文件所在的目錄

DST_DIR:是指輸出的Java文件存在的地址

為了方便,我一般把proto文件拷貝到第一步擠壓所在的文件夾,即和protoc.exe放在同一目錄下面。這樣編譯的時候比較方便。

首先我們cmd進入到protoc.exe所在的目錄。之后就可以編譯了。

protoc.exe -I=. --java_out =. addreddbook.proto

使用protoc.exe和protoc是一樣的。這里的”.”是指當前目錄。這樣運行以后,就可以在當前目錄看到生成的java文件。

3、如何解析收到的protoBuf文件

比如之前生成的java文件名叫做UPerson.java

UPerson.Person mPerson = Uperson.parseFrom(protobuf)

這里的protobuf是獲取到的數據,之后就可以通過get方法獲取里面具體的參數

String name = mPerson.getName();

int id = mPerson.getId();

String email = mPerson.getEmail();

Enum phoneType = mPerson.getPhoneType();

UPerson.Person.PhoneNumeber phoneNumeber = mPerson.getPhoneNumeber();

List phone = mPerson.getPhoneList();

4、如何組裝成protobuf數據

Person john =

Person.newBuilder()

.setId(1234)

.setName("John Doe")

.setEmail("jdoe@example.com")

.addPhone(

Person.PhoneNumber.newBuilder()

.setNumber("555-4321")

.setType(Person.PhoneType.HOME))

.addPhone(

Person.PhoneNumber.newBuilder()

.setNumber("555-4322")

.setType(Person.PhoneType.HOME))

.build();

5 使用for循環動態給repeated類型賦值。構造protobuf

UPerson.Person mPerson = UPerson.Person.newBuilder().build();

UPerson.Person.PhoneNumeber phoneNumeber = null;

for(int i = 0; i < mlist.size; i++) {

phoneNumeber = UPerson.Person.PhoneNumeber

.newBuilder()

.setNumber(mList.get(i).getNumber())

.setType(mList.get(i).getType)

.build();

mPerson = mPerson.toBuilder.addPhone(phoneNumber).build();

}

6、 如何給一個生成好的protobuf,重新賦值

比如重新賦值5中的john數據

john.toBuilder.

.setId(12345)

.setName("John Doe5")

.setEmail("jdoe5@example.com")

.addPhone(

Person.PhoneNumber.newBuilder()

.setNumber("555-43213")

.setType(Person.PhoneType.WORK))

.build();

大功告成,希望能對各位看官有幫助,大家覺得有用就幫忙頂一下,或者點個贊

總結

以上是生活随笔為你收集整理的protobuf android 编译,Android 中protobuf 的安装,编译和使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。