随笔-生活工作点滴工作生活

Protobuf 在android的使用

2019-07-04  本文已影响0人  薰舞空

Protobuf

一、配置

1.项目build.gradle中添加插件:

classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.8'

2.module build.gradle添加插件:

apply plugin: 'com.google.protobuf'

3.module build.gradle添加配置:

android {

  protobuf {

        protoc {

            artifact = 'com.google.protobuf:protoc:3.0.0'

        }

        plugins {

            javalite {

                artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'

            }

        }

        generateProtoTasks {

            all().each { task ->

                task.builtins {

                    remove java

                }

                task.builtins {

                    java { }

                    cpp { }

                }

            }

        }

    }

}

4.module build.gradle添加依赖

compile 'com.google.protobuf:protobuf-java:3.6.1'

5.添加目录及配置:

sourceSets {
        main {
            java {
                srcDir 'src/main/java'
            }
            proto {
                srcDir 'src/main/proto'
            }
        }
    }

在java同级创建proto文件夹

6.在studio中加入插件 ProtoBuf Support 并重启studio

配置完成

二、开发

1在protobuf文件夹下新建test.proto文件

syntax = "proto3";
package com.xxx.xxx; //输出的包名
option java_outer_classname = "XXXX";  //输出的类名

message User{
        int64 id    = 1 ;
        string name = 2 ;
}

构建一下就ok了

可以使用SObjectModel.User.newBuilder()建一个实例看看

解析的话就是使用SObjectModel.User.parseFrom方法,传入一个InputStream

序列话是user.build().toByteArray()方法

报错:

 Directory '/<project_path>/build/extracted-include-protos/main' specified for property '$3' does not exist.

更改protobuf-gradle-plugin的版本

上一篇下一篇

猜你喜欢

热点阅读