ProtoBuf的官方下载包并不包含jar文件,需要用户自己来自行编译。
下载地址:https://github.com/google/protobuf/releases
protobuf-2.6.1.tar.gz
(ProtoBuf的源文件(包含了C++/Java/Python)的源文件)
protoc-2.6.1-win32.zip
(已经编译过的用于Windows平台的protoc命令,该命令用于将.proto文件转化为Java或C++源文件)
注意,以上两个文件的版本必须匹配一致
分别解析这两个文件,你可以在protoc-2.6.1-win32.zip解压后的文件中找到一个protoc.exe文件,将其copy到protobuf-2.6.0/src目录下,然后进入protobuf-2.6.0/java
mvn install
编译完成后可以在protobuf-2.6.1/java/target目录中找到protobuf-java-2.6.1.jar文件
如果要生成plugin.java文件在\java\target\generated-sources\com\google\protobuf\compiler\PluginProtos.java,则需要修改\java\pom.xml里添加这样一行
<tasks>
<mkdir dir="target/generated-sources" />
<exec executable="../src/protoc">
<arg value="--java_out=target/generated-sources" />
<arg value="--proto_path=../src" />
<arg value="../src/google/protobuf/descriptor.proto" />
<arg value="../src/google/protobuf/compiler/plugin.proto" />
</exec>
</tasks>
把protobuf-java-2.6.1.jar,protoc.exe,PluginProtos.java 替换到自动生成代码的工具里,升级完成。
option optimize_for = LITE_RUNTIME;
optimize_for是文件级别的选项,Protocol Buffer定义三种优化级别SPEED/CODE_SIZE/LITE_RUNTIME。缺省情况下是SPEED。
SPEED: 表示生成的代码运行效率高,但是由此生成的代码编译后会占用更多的空间。
CODE_SIZE: 和SPEED恰恰相反,代码运行效率较低,但是由此生成的代码编译后会占用更少的空间,通常用于资源有限的平台,如Mobile。
LITE_RUNTIME: 生成的代码执行效率高,同时生成代码编译后的所占用的空间也是非常少。这是以牺牲Protocol Buffer提供的反射功能为代价的。因此我们在C++中链接Protocol Buffer库时仅需链接libprotobuf-lite,而非libprotobuf。在Java中仅需包含protobuf-java-2.4.1-lite.jar,而非protobuf-java-2.4.1.jar。
注:对于LITE_MESSAGE选项而言,其生成的代码均将继承自MessageLite,而非Message。
使用:
1. 编辑.proto文件:如message.proto
2. 将protoc.exe和.proto文件放在同一个文件夹
3. 在命令行执行:protoc.exe --java_out=./ message.proto(等号前后无空格,"./"后面有空格)
4. 然后使用实体.toByteArray()和parseFrom()方法进行序列化和反序列化
相关推荐
Protobuf 使用手册 本文档旨在提供一个详细的 Protobuf 使用手册,涵盖了 protobuf 的常见使用方法、内部原理实现的介绍、使用经验建议等。同时,也分别介绍了 protobuf 在 C++、Python、Java 的使用。 一、...
Protocol Buffers是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和平台并且可扩展性极强。现阶段官方支持C++、JAVA、Python等三种编程语言...
在这个“android protobuf 使用demo”中,我们将深入探讨如何在Android项目中集成和使用protobuf。 首先,我们需要了解.proto文件。这是一种文本格式的文件,用于定义protobuf的消息类型。例如: ```proto syntax ...
**protobuf简介** Google ProtoBuf(Protocol Buffers)是一种数据序列化协议,用于高效地存储和传输结构化数据。...在Java中,通过简单的步骤就可以实现ProtoBuf的使用,从而提升应用程序的性能和可维护性。
**protobuf使用示例** protobuf(Protocol Buffers)是Google开发的一种数据序列化协议,它可以将结构化的数据序列化,可用于数据存储、通信协议等方面。它提供了比XML更小、更快、更简单的方式来让结构化数据进行...
Protobuf使用手册.docx
Protobuf使用手册.pdf
2. 编译 Protocol Buffers:使用 Visual Studio 打开 Protocol Buffers 的工程文件(protobuf.sln),然后进行编译。 3. 生成代码:使用 protoc 工具将 proto 文件编译成对应的代码。 4. 使用生成的代码:将生成的...
虽然Protobuf本身不包含加密功能,但它可以与现有的加密技术结合使用,如SSL/TLS或AES等,实现数据的安全传输。在通信过程中,可以在Protobuf序列化后的二进制数据上添加一层加密,保证数据在传输过程中的安全性。 ...
**protobuf使用案例** protobuf,全称Protocol Buffers,是Google推出的一种数据序列化协议,用于高效地存储和传输数据。它能将结构化的数据序列化为二进制流,相比JSON和XML,protobuf在性能和数据大小方面都有...
### protobuf c++ 使用手册 #### 1.1 什么是 Protocol Buffer? Protocol Buffer(简称 Protobuf)是 Google 开发的一种数据交换格式,它高效、简洁且易于人工编写和阅读。Protobuf 提供了一种序列化结构化数据的...
通过使用Protobuf,开发者可以定义数据结构,然后自动生成相应的源代码,以便在多种编程语言中方便地处理结构化数据。对于C++开发,Protobuf会生成消息类,并提供API函数用于读写消息。 ### 1. Ubuntu平台上安装...
4. **优化内存占用**:在 Android 上,由于内存限制,使用 Protobuf 可以有效减少序列化数据的内存占用,提高性能。 **三、Java 中的 Protobuf 使用** 1. **Java API**:在 Java 应用中,Protobuf 提供了丰富的 ...
(1) protobuf-net:项目使用的插件,就是从 protobuf-net-2.1.0-alpha-5/protobuf-net 直接拖入的 (2) WebPlayerTemplates/protobuf-net: 老版本的可用插件。因为新拖入的插件还没有完整测试过,这里保留一下老的 (3...
在 Linux 系统上,可以使用以下命令安装 protobuf: ``` sudo apt-get install protobuf-compiler ``` ### 2. 编写 .proto 文件 创建一个名为 `detect.proto` 的文件,并添加以下内容: ``` syntax = "proto3"; ...
里面含有 protobuf3.13.0 用cmake MSVC 编译的动态链接库。 里面有debug,release 32位和64位的 lib,dll,exe. 包含一个简单的序列化 反序列化的Qt demo。