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在c++、python、java的使用。
Protocol Buffers是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和平台并且可扩展性极强。现阶段官方支持C++、JAVA、Python等三种编程语言...
Google ProtoBuf 安装使用说明
google protobuf的简单实用方法,主要用于向他人介绍。 可以用于数据传输和单元测试中 google protobuf的简单实用方法,主要用于向他人介绍。 可以用于数据传输和单元测试中
protoBuf Java语言使用demo
详细介绍了protobuf 在程序中的使用方法
参照官网介绍及相关代码示例整理的谷歌Protobuf使用快速入门手册。 Protocol buffers 是谷歌用于序列化数据的方案,具有语言无关、平台无关、可扩展的机制 – 类似XML, 但更小、更快和更简单。一旦定义了数据的结构化...
使用谷歌开源的Protobuf通信协议,可以动态的优化通信协议包,缩小包的长度,并进行安全加密传输。
使用.proto 数据格式demo
(1) protobuf-net:项目使用的插件,就是从 protobuf-net-2.1.0-alpha-5/protobuf-net 直接拖入的 (2) WebPlayerTemplates/protobuf-net: 老版本的可用插件。因为新拖入的插件还没有完整测试过,这里保留一下老的 (3...
里面含有 protobuf3.13.0 用cmake MSVC 编译的动态链接库。 里面有debug,release 32位和64位的 lib,dll,exe. 包含一个简单的序列化 反序列化的Qt demo。
在Unity中使用ProtoBuf的工具,使用protoc将写好的proto 3文件生成csharp使用的代码,在网络传输中用着再好不过了
protobuf api详细序列化与反序列化示例代码
protobuf基本操作1
Protobuf 前言 protobuf,全称:Google Protocol Buffer,是Google开源的一种轻便高效的结构化数据存储格式,可以用于结构化数据的串行化,也称作序列化,主要用于数据存储或是RPC数据交换,支持多语言,可拓展。 ...
这是一个protobuf入门级使用DEMO,google官方出的序列化和反序列化工具,其性能和字节数都JSON和XML高了不止一个等级,相信通过这个代码,你能很快上手protobuf的使用。
protobuf使用
protobuf 使用protocexe方法