protobuf 初探
2017-11-23 13:49
253 查看
准备工作:
1.protobuf jar包的下载.
我使用的是protobuf-java-2.5.0.jar
2.电脑安装protobuf:
我们需要它来预处理代码。
实际操作:
1.准备文件×××.proto,这里我的是test.proto
2.因为是基于java的使用。这里需要将proto文件转换为jave可使用的文件,最红输出test.java:
protoc --java_out=./ test.proto
--java_out:表示输出java文件
--cpp_out:表示输出C++文件
./ 表示生成的文件放于哪个目录,我的./ 表示当前目录(linux系统)
3.创建工程测试
1)这里写了一个小app;
2)将jar文件(protobuf-java-2.5.0.jar)添加到项目
3)将生成结构文件test.proto生成的test.java添加到项目
test.proto 结构文件:
message Person {
optional int32 id = 1;
optional string name = 2;
}
代码
1.protobuf jar包的下载.
我使用的是protobuf-java-2.5.0.jar
2.电脑安装protobuf:
我们需要它来预处理代码。
实际操作:
1.准备文件×××.proto,这里我的是test.proto
2.因为是基于java的使用。这里需要将proto文件转换为jave可使用的文件,最红输出test.java:
protoc --java_out=./ test.proto
--java_out:表示输出java文件
--cpp_out:表示输出C++文件
./ 表示生成的文件放于哪个目录,我的./ 表示当前目录(linux系统)
3.创建工程测试
1)这里写了一个小app;
2)将jar文件(protobuf-java-2.5.0.jar)添加到项目
3)将生成结构文件test.proto生成的test.java添加到项目
test.proto 结构文件:
message Person {
optional int32 id = 1;
optional string name = 2;
}
代码
package com.example.ts.proto; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import static android.support.v7.widget.AppCompatDrawableManager.get; public class MainActivity extends AppCompatActivity { ByteArrayOutputStream out; ByteArrayInputStream in; TextView textView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.protoTest); createAndSend(); } private void createAndSend(){ Test.Person.Builder builder = Test.Person.newBuilder(); builder.setId(11); builder.setName("HelloProto"); builder.setEmail("******"); Test.Person person = builder.build(); out = new ByteArrayOutputStream(); try{ person.writeTo(out); getInput(); } catch(Exception exception){ exception.printStackTrace(); } } private void getInput(){ byte[] input = out.toByteArray(); in = new ByteArrayInputStream(input); try{ Test.Person person = Test.Person.parseFrom(in); display(person.getName()); }catch (Exception e){ e.printStackTrace(); } } private void display(String string){ android.util.Log.d("liu","string:"+string); if(textView != null){ textView.setText(string); } } }
相关文章推荐
- Swift Protobuf 初探 —— 继 XML 后,JSON 也要被淘汰了吗
- Swift Protobuf 初探 —— 继 XML 后,JSON 也要被淘汰了吗
- Protocol Buffer-net初探--最简单的Protobuf-net应用
- ProtoBuf 初探
- Swift Protobuf 初探 —— 继 XML 后,JSON 也要被淘汰了吗
- Android Protobuf 初探笔记
- protobuf的使用初探
- protobuf 自动生成c# .cs文件 -protogen用法
- Google ProtoBuf
- protobuf序列化存储
- 交叉编译 google protobuf
- 安装protobuf Python支持
- protobuf 嵌套协议使用方法
- linux下安装protobuf教程+示例(详细)
- caffe + anaconda: install : conda install protobuf
- java与c++的protobuf网络通信
- protobuf 参考资料
- protobuf 之 MessageLite 接口摘录
- dubbox 增加google-gprc/protobuf支持
- no module named google.protobuf.internal