Android Studio使用protobuf协议开发

这篇文章主要是介绍如何在AndroidStudio中使用protobuf协议。

先简单的介绍下protobuf:

什么是protobuf呢?官网是这么说的:

Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data 。

翻译过来大概就是:Protocol Buffers(也称protobuf)是google旗下一款独立于开发语言,独立于平台的可扩展的结构化数据序列机制。

简单来说,就是像json、xml这种用来传输数据的一种数据交互协议。不过,相比与json、xml,protobuf更加轻便与高效。

那么,我们在AndroidStudio中要如何去使用protobuf协议呢?

首先,我们需要在全局的build.gradle文件中添加上protobuf工具插件:

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

然后,要app/build.gradle文件中添加上此插件:

apply plugin: 'com.google.protobuf'

 
  

然后我们需要在app/build.gradle下添加依赖:

    compile 'com.google.protobuf:protobuf-java:3.5.1'
这里有个细节需要说明下,我们客户端添加的protobuf依赖版本号应该尽量要与服务端添加的依赖版本号相同,因为在调protobufMsg.writeDelimitedTo(outputStream)时,protobuf内部使用的encoding方式对数据进行序列化,服务端在拿到数据后会进行反序列化。如果此时客户端版本与服务端版本相差太大的话,其内部 encoding与服务端的decoding的方式可能出现差异,这样服务端将无法进行反序列化。 亲身经历,这个坑排查了好久。。

接下来在app/build.gradle里添加上:

protobuf {
    //配置protoc编译器
    protoc {
        artifact = 'com.google.protobuf:protoc:3.5.1'
    }
    //这里配置生成目录,编译后会在build的目录下生成对应的java文件
    generateProtoTasks {
        all().each { task ->
            task.builtins {
                remove java
            }
            task.builtins {
                java {}
            }
        }
    }
}

然后在src/main目录下创建proto文件夹,将你的.proto文件放置在proto目录下,并在app/build.gradle文件中,android模块里添加上:

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

然后Rebuild 一下,如果在app/build/generated/source/proto/目录下找到与你与放在src/main/proto目录下的protobuf文件同名的java文件,就说明我们配置成功了。

最后,如果你需要校验protobuf文件的语法正确性,以及需要在AndroidStudio里编写Protobuf文件,你可以在File-Settings-Plugins里搜索Protobuf Support,添加Protobuf Support插件,当你重启后发现原来的.proto文件都变成这种图标,即说明支持插件已经引用成功了,阁下可以愉快的编程了。



你可能感兴趣的:(开发笔记)