文章目录

  • 一、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 " 下载最近的发布版本 ;

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

下载 Windows 64 位对应的工具 ,

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

三、使用 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 目录 ,

这里根据 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 源码 :

四、参考资料


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

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

  1. 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 序列化 | Protobuf 反序列化 )

    文章目录 一.Protobuf 序列化 二.Protobuf 反序列化 三.完整代码 四.参考资料 一.Protobuf 序列化 在上一篇博客 [Android Protobuf 序列化]Protob ...

  2. 【Android Protobuf 序列化】Protobuf 使用 ( protobuf-gradle-plugin 插件简介 | Android Studio 中配置插件 | AS 中编译源文件 )

    文章目录 一.protobuf-gradle-plugin 插件简介 二.Android Studio 中配置 protobuf-gradle-plugin 插件 三.Android Studio 中 ...

  3. 【Android Protobuf 序列化】Protobuf 服务器与客户端通信 ( TCP 通信中使用 Protobuf )

    文章目录 一.TCP 粘包和分包 二.TCP 粘包和分包解决方案 三.客户端 Android 应用使用 Protobuf 四.服务器端 Java 服务器使用 Protobuf 五.参考资料 一.TCP ...

  4. 【STM32开发】win平台开源工具链开发STM32(二)编译器和下载器

    摘要: 继上节介绍完stm32的开发流程和文本编辑工具之后,本节将介绍工具链中最重要的两个工具:编译器和下载器. 一.编译器 百度百科对编译器的解释:编译器就是将"一种语言(通常为高级语言) ...

  5. 【Android Protobuf 序列化】Protobuf 简介 ( Protobuf 项目简介 | Protobuf 优缺点分析 )

    文章目录 一.Protobuf 简介 二.Protobuf 优缺点分析 1.Protobuf 优点 2.Protobuf 缺点 三.参考资料 一.Protobuf 简介 Protobuf 是 Goog ...

  6. 【Android Protobuf 序列化】Protobuf 使用 ( Protobuf 源码分析 | 创建 Protobuf 对象 )

    文章目录 一.Protobuf 源码分析 二.创建 Protobuf 对象 三.完整代码示例 四.参考资料 一.Protobuf 源码分析 Protobuf 源文件如下 : addressbook.p ...

  7. 【Android Protobuf 序列化】Protobuf 性能测试 ( fastjson 序列化与反序列化 | gson 序列化与反序列化 | 三种序列化与反序列化性能对比 )

    文章目录 一.导入依赖库 二.构造 JavaBean 三.fastjson 序列化与反序列化 四.gson 序列化与反序列化 五.完整代码 1.主界面代码 2.JSON 测试代码 3.执行结果 六.参 ...

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

    文章目录 一.Protobuf 使用文档 二.创建 Protobuf 源文件 三.Protobuf 语法 四.参考资料 一.Protobuf 使用文档 Protobuf Java 语言对应用法 : h ...

  9. Windows系统下使用protobuf:protobuf的简介、安装、使用方法之详细攻略

    Windows系统下使用protobuf:protobuf的简介.安装.使用方法之详细攻略 目录 protobuf的简介 protobuf的安装 protobuf的使用方法 protobuf的简介 P ...

最新文章

  1. Java面试题:缓存三大问题及解决方案!
  2. spark standalone zookeeper HA部署方式
  3. 西北AI现在什么水平?有人3年即实现盈利,如今估值7亿!西工大系CEO:现实没那么高大上...
  4. 2016年蓝桥杯省赛题解
  5. [html] 使用history路由方式时,你有自己动手配置过服务器端吗?为什么要配服务器端?怎么配?
  6. Linux内存寻址方式
  7. 逻辑性最强的React Native环境搭建与调试
  8. 哈工大计算机学院历史,历史沿革
  9. Win-MASM64汇编语言-JMP指令
  10. NFS rhel 7
  11. servlet容器_Tomcat是一个Servlet容器?
  12. 程序员的自我吐槽,来自专业人士的扎心吐槽!
  13. Linux 常用命令参考手册, 非常适合入门, 基本能满足工作日常使用。
  14. 如何从面试官中知道自己需要准备什么
  15. 基于cisco 模拟公司网络拓扑
  16. 百度导航hd android,百度导航HD版
  17. 4tensorflow-优化器
  18. PhpExcel向特定文件中插入数据,将数据导入到指定文件中
  19. 深度学习在医学图像分割上的技巧、挑战、未来方向——论文研读
  20. UE4_击中伴随爆炸音效及效果

热门文章

  1. android多线程读取网页内容
  2. 在ubuntu10.4安装snort ACID
  3. ESP系列AT指令开发笔记
  4. 【学习记录】无法找到“Procedural Foliage Spawner”
  5. 《Linux内核设计与实现》内存管理札记
  6. 挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)
  7. 让IE6、IE7、IE8支持CSS3的圆角、阴影样式
  8. ADO.NET常用对象
  9. .net常用技巧及调优
  10. 《DL/T 1476-2015 电力安全工器具预防性试验规程》中的样品名称及试验项目