Android Studio使用protobuf协议开发

本文详细介绍了如何在Android Studio中使用protobuf协议。从protobuf的基本概念,到在项目中添加protobuf工具插件、配置build.gradle文件,创建proto文件夹并放置.proto文件,以及如何验证protobuf文件的语法和安装Protobuf Support插件,确保在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文件都变成这种图标,即说明支持插件已经引用成功了,阁下可以愉快的编程了。



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值