0
点赞
收藏
分享

微信扫一扫

【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )

东林梁 2022-03-12 阅读 71

文章目录

  • 一、protoc 编译器简介
  • 二、下载 protoc 编译器
  • 三、使用 protoc 编译器编译 addressbook.proto 源文件
  • 四、参考资料

一、protoc 编译器简介

在上一篇博客 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 使用文档 | 创建 Protobuf 源文件 | Protobuf 语法 ) 中 , 在 Android Studio 项目中添加了 Protobuf 源文件 addressbook.proto ;

使用 Protobuf 编译器 , 编译上述源文件 , 生成对应 Java 源码 ;

Protobuf 编译器是 protoc , 类似于 Java 语言的编译器是 javac , C 语言的编译器 gcc , Protobuf 语言的编译器是 protoc 编译器 , 编译上述源码 ;

​protoc 编译器编译指令 :​

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

-I 参数设置编译的 .proto 源文件所在的目录 ;

--java_out= 参数指定的是输出目录 ;

最后的参数是设置的 .proto 源文件的相对目录 ;

使用 --java_out= 参数指定的是输出 Java 源文件 , Android 中使用 ;

使用 --objc_out= 参数指定的是输出 Objective-C 源文件 , iOS 中使用 ;

二、下载 protoc 编译器

在 https://developers.google.com/protocol-buffers/docs/downloads 页面可以下载 Protobuf , 点击 " Latest Version " 的 " release page " 下载最近的发布版本 ;

【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )_编译器

跳转到 https://github.com/protocolbuffers/protobuf/releases 界面下载对应的 Protobuf 版本 ;

下载 Windows 64 位对应的工具 ,

【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )_源文件_02

下载完成后, 解压该压缩包 :

【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )_Protobuf_03

三、使用 protoc 编译器编译 addressbook.proto 源文件

将 addressbook.proto 源文件拷贝到 " D:\develop\protobuf\protoc-3.15.8-win64\bin\ " 目录 ,

​执行如下命令 :​

protoc -ID:\develop\protobuf\protoc-3.15.8-win64\bin\ --java_out=. addressbook.proto

-I​ 参数设置编译的 .proto 源文件所在的目录 , 当前 Protobuf 源码路径是 " D:\develop\protobuf\protoc-3.15.8-win64\bin\​ " , -I 与 路径中间没有空格 ;

--java_out=​ 参数指定的是输出目录 , . 表示当前目录 ;

最后的参数 addressbook.proto 是设置的 .proto 源文件的相对目录 ;

编译完成后 , 生成一个 com 目录 ,

【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )_java_04

这里根据 Java 的类名层级生成的目录 , 在 中配置的 Java 包名类名如下 :

option java_package = "com.example.tutorial.protos";
option java_outer_classname = "AddressBookProtos";

在该 D:\develop\protobuf\protoc-3.15.8-win64\bin\​ 目录下的 com\example\tutorial\protos\ 目录中生成了如下 Java 源码 :

【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )_编译器_05

四、参考资料

​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://developers.google.com/protocol-buffers/docs/downloads
  • ​Protobuf 源码地址 :​ https://github.com/protocolbuffers/protobuf
  • ​Protobuf 发布版本下载地址 :​ https://github.com/protocolbuffers/protobuf/releases
举报

相关推荐

0 条评论