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

歡迎訪問 生活随笔!

生活随笔

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

Android

【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 使用文档 | 创建 Protobuf 源文件 | Protobuf 语法 )

發布時間:2025/6/17 Android 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 使用文档 | 创建 Protobuf 源文件 | Protobuf 语法 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、Protobuf 使用文檔
  • 二、創建 Protobuf 源文件
  • 三、Protobuf 語法
  • 四、參考資料





一、Protobuf 使用文檔



Protobuf Java 語言對應用法 : https://developers.google.com/protocol-buffers/docs/javatutorial

使用時 , 參考上述頁面的文檔說明 , 進行開發 ;





二、創建 Protobuf 源文件



首先 , 編寫 Protobuf 源文件 , 使用官方提供的源文件 , 進行開發 ;

syntax = "proto2";package tutorial;option java_multiple_files = true; option java_package = "com.example.tutorial.protos"; option java_outer_classname = "AddressBookProtos";message Person {optional string name = 1;optional int32 id = 2;optional string email = 3;enum PhoneType {MOBILE = 0;HOME = 1;WORK = 2;}message PhoneNumber {optional string number = 1;optional PhoneType type = 2 [default = HOME];}repeated PhoneNumber phones = 4; }message AddressBook {repeated Person people = 1; }

在 Android Studio 工程中的 " app/src/main " 目錄下 , 創建 proto 目錄 , 在該 " app/src/main/proto " 目錄下 , 創建 " addressbook.proto " 源文件 ;

將官方的 proto 示例源碼拷貝到該文件中 ;


( 上圖的源碼添加了注釋 )





三、Protobuf 語法



設置 protobuf 語法版本 : Protocol Buffers 有 proto2 和 proto3 兩個版本 , 這兩個版本之間的 語法 , 與 底層實現 都有一定的不同 ;

syntax = "proto2";

設置生成 Java 源文件的包名和類名 :

// 生成 Java 源文件包名 option java_package = "com.example.tutorial.protos"; // 生成 Java 源文件類名 option java_outer_classname = "AddressBookProtos";

設置生成 Java 類 : message 相當于 Java 中的 class , 編譯出的源文件就是 class Person{} ;

// message 相當于 Java 中的 class // 編譯出的源文件就是 class Person{} message Person {

設置生成 Java 類的字段名稱 : 字段前有 optional 和 required 修飾 , 如果被 required 修飾 , 表示該字段不能為空 ; 被 optional 修飾 , 表示可選的 , 可以設置為空 ;

在創建后 , 會檢測被 required 修飾的字段 , 如果沒有賦初值 , 就會報錯 ;

// String 類型的字段// 字段前有 optional 和 required 修飾optional string name = 1;optional int32 id = 2;optional string email = 3;

枚舉值 : Protobuf 中設置枚舉與 Java 相同 , 定義和使用的用法如下 ;

// 枚舉enum PhoneType {MOBILE = 0;HOME = 1;WORK = 2;}message PhoneNumber {optional string number = 1;// 字段值是枚舉類型, 默認是 HOME 類型optional PhoneType type = 2 [default = HOME];}

集合 : 使用 repeated 修飾字段 , 表示重復的數據 , 即集合 ;

// 表示重復的數據 , 即集合// 有多個 PhoneNumber phones 組成的集合repeated PhoneNumber phones = 4;

完整帶注釋的 Protobuf 源文件 :

// 指定 Protocol Buffers 語法版本 syntax = "proto2";package tutorial;option java_multiple_files = true;// 生成 Java 源文件包名 option java_package = "com.example.tutorial.protos"; // 生成 Java 源文件類名 option java_outer_classname = "AddressBookProtos";// message 相當于 Java 中的 class // 編譯出的源文件就是 class Person{} message Person {// String 類型的字段// 字段前有 optional 和 required 修飾optional string name = 1;// int 整型 , 32 位optional int32 id = 2;optional string email = 3;// 枚舉enum PhoneType {MOBILE = 0;HOME = 1;WORK = 2;}message PhoneNumber {optional string number = 1;// 字段值是枚舉類型, 默認是 HOME 類型optional PhoneType type = 2 [default = HOME];}// 表示重復的數據 , 即集合// 有多個 PhoneNumber phones 組成的集合repeated PhoneNumber phones = 4; }message AddressBook {repeated Person people = 1; }



四、參考資料



Protobuf 參考資料 :

  • Protobuf 官網主頁 : https://developers.google.com/protocol-buffers

  • Protobuf 語法指南 : https://developers.google.com/protocol-buffers/docs/proto

  • Protobuf Java 語言對應用法 : https://developers.google.com/protocol-buffers/docs/javatutorial

  • Protobuf 源碼地址 : https://github.com/protocolbuffers/protobuf

總結

以上是生活随笔為你收集整理的【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 使用文档 | 创建 Protobuf 源文件 | Protobuf 语法 )的全部內容,希望文章能夠幫你解決所遇到的問題。

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