码迷,mamicode.com
首页 > 其他好文 > 详细

Google ProtocolBuffer(PB) 简介和实例2-Wire的使用

时间:2015-05-03 17:34:29      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:pb   wire   android   

Wire简介

  • 轻量级的protocol buffers,针对移动设备的java库
  • (和protoc产生的代码相比较)由Wire生成的代码方法数量将大大减少,这将有助于android应用避免方法数65k的限制

使用方法

  1. 下载最近的wire jar包,目前最新的版本是wire-compiler-1.7.0-jar-with-dependencies.jar, github上有下载链接
  2. 编写 .proto 文件,这里直接采用上一篇介绍pb时用到的例子
  3. 编译 .proto 文件,用wrie生成java类, 命令如下:java -jar wire-compiler-1.7.0-jar-with-dependencies.jar --proto_path=. --java_out=. addressbook.proto
  4. 序列化和反序列化

    // 构建对象
    PhoneNumber pb = new PhoneNumber.Builder().number("123---adf")
            .type(PhoneType.HOME).build();
    PhoneNumber pb2 = new PhoneNumber.Builder().number("123---adf")
            .type(PhoneType.MOBILE).build();
    
    List<PhoneNumber> phones = new ArrayList<PhoneNumber>();
    phones.add(pb);
    phones.add(pb2);
    
    Person john = new Person.Builder().id(1234).name("John Doe")
            .email("jdoe@example.com").phone(phones).build();
    
    System.out.println(john.toString());
    
    // 序列化
    byte[] johnbyte = john.toByteArray();
    
    // 反序列化
    Wire wire = new Wire();
    try {
        Person john2 = wire.parseFrom(johnbyte, Person.class);
        System.out.println(john2.toString());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    

方法数量对比

  • wire产生的代码和protoc产生的代码方法数比是: 82: 508
dd@ubuntu:~/Desktop$ ./jarmethod.sh ‘/home/dd/Desktop/shard_with_win7/pb-wire.jar‘ 
82
dd@ubuntu:~/Desktop$ ./jarmethod.sh ‘/home/dd/Desktop/shard_with_win7/pb-c.jar‘ 
508

参考链接

Google ProtocolBuffer(PB) 简介和实例2-Wire的使用

标签:pb   wire   android   

原文地址:http://blog.csdn.net/cheyiliu/article/details/45459353

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!