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 的安装,编译和使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Openfire之服务器地址更改
- 下一篇: Android常用库整理