Android使用protobuf插件

demo地址:https://github.com/zhaopingfu/listener22_Protobuf

protobuf

源码: https://github.com/google/protobuf

如果不想自己编译获得最新版本,则可以下载官方编译好的各个平台的
下载地址: https://github.com/google/protobuf/releases,注意不是带语言后缀的文件,那是源码,如下图:

这里写图片描述

Android中使用protobuf

  • 第一步:写一个proto文件:

    person.proto
    内容如下:
    option optimize_for=LITE_RUNTIME; // 使用lite模式
    package com.pf.pojo;

    option java_outer_classname = "ProtoPerson"; // 输出的java文件名
    
    message Person{
        optional string name = 1;
        optional uint32 age = 2;
    }
    
  • 第二步:编译,生成java文件
    编译命令:C:\Users\Administrator\Desktop\protoc-3.4.0-win32\bin>protoc.exe –java_out=. person.proto

  • 第三步:将生成的java文件拷贝到编译器中(代码中需要用到compile ‘com.google.protobuf:protobuf-java:3.3.1’)

发现问题

在Android中使用protoc代码,需要先写一个protoc文件,然后在编译生成java文件,最后拷贝到编译器中,如果我们修改了proto文件,那么每次都要执行上面的三个步骤,非常麻烦,所以要写这个插件

配置插件

  • 第一步:将buildSrc复制过去

  • 第二步:在app下的build.gradle中引用插件

    apply plugin: com.pf.protobuf.ProtobufPlugin
    
    protobuf {
        // proto文件的路径
        srcDir 'src/main/proto'
        protoc {
    //        path ''
            artifact 'com.google.protobuf:protoc:3.2.0'
        }
    }
    
  • 第三步:在app下的dependencies中引用

    compile ‘com.google.protobuf:protobuf-java:3.3.1’

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Protobuf(Protocol Buffers)是一种轻量级的数据序列化格式,用于结构化数据的存储和交换。它具有跨平台、高效、可扩展等特点,被广泛应用于分布式系统、通信协议、数据存储等领域。 要使用Protobuf件,首先需要安装Protobuf编译器(protoc)和相应的件。然后,按照以下步骤进行使用: 1. 定义消息结构:使用Protobuf语言定义消息的结构,包括字段名称、类型和标签等信息。例如,可以创建一个名为`person.proto`的文件,并在其中定义一个`Person`消息类型。 2. 编写消息定义:在`person.proto`文件中,使用Protobuf语言编写消息的定义。例如,可以定义一个包含姓名和年龄字段的`Person`消息类型。 3. 编译消息定义:使用Protobuf编译器将消息定义文件编译成目标语言的代码。例如,可以使用以下命令将`person.proto`文件编译成Python代码: ``` protoc --python_out=. person.proto ``` 4. 使用生成的代码:根据目标语言生成的代码,可以在应用程序中使用Protobuf消息进行序列化和反序列化操作。例如,在Python中可以导入生成的代码,并使用`Person`类创建和操作消息对象。 相关问题: 1. Protobuf是什么? 2. Protobuf有哪些特点? 3. 如何定义Protobuf消息结构? 4. 如何使用Protobuf编译器生成代码? 5. 如何在应用程序中使用生成的代码进行序列化和反序列化操作?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值