Android项目使用Protobuf教程(结合Retrofit+RxJava及HttpURLConnection使用)

本文提供了一份详尽的Android项目中使用Protobuf的教程,包括结合Retrofit+RxJava及HttpURLConnection的使用方法。通过创建.proto文件,生成Java类,并在服务端和Android端实现数据传输,展示了从定义proto文件到实现登录功能的全过程。此外,还介绍了在Android Studio中使用protobuf插件的步骤。
摘要由CSDN通过智能技术生成

Android项目使用Protobuf教程(结合Retrofit+RxJava及HttpURLConnection使用)

最近项目中使用到了protobuf,但是网上的关于protobuf在android中的使用教程是非常的少,Protobuf结合Retrofit+RxJava使用的教程几乎也没有,即使有相关介绍写得也不够全面,于是才有了这篇相对比较完整的文章(包括服务端和App端代码),希望可以帮助更多的人在android中使用protobuf。

请尊重原创,转载需要注明出处,大力哥的博客:https://blog.csdn.net/qq137722697

protobuf进阶篇已完成–> Android/Java中使用Protobuf的Any类型实现泛型解析

什么是Protobuf

Protobuf (全称 Protocol Buffers),是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面【Protobuf百度百科介绍】。简单点来说就是类似于Json、Xml,最主要的优点是比Json、Xml速度快,相信不久的将来应用会更加广泛。
以上只是简单的介绍,为了方便快速进入使用教程,本文默认你已经知道protobuf是什么、优缺点、应用场景、定义消息类型等,如未了解这些可参考以下文档:
- 中文版:Protobuf3语言指南(https://blog.csdn.net/u011518120/article/details/54604615
- 英文版:Language Guide (proto3) (https://developers.google.com/protocol-buffers/docs/proto3?hl=zh-cn#generating

Demo介绍

本文以用户登录为例(为啥又是登录?因为简单,容易理解呀),下面是demo的效果图:

app端:

这里写图片描述

服务端:

这里写图片描述

下面开始介绍如何实现

搭建.proto文件生成java类的环境

android中使用protobuf,过程是这样的:

  • 1、定义proto文件;
  • 2、使用该文件生成对应的java类;
  • 3、利用该java类实现数据传输;

从以上过程中就可以看出,我们并不是直接使用proto文件,而是对应的java类,如何根据proto文件生成java类呢?官方推荐的是命令行的方式生成,但是Android Studio生成方式更加简单,这里直接介绍as生成方式(同样适用服务端开发工具intellij idea)

第一步

AS创建protobuf生成项目(用于专门生成对应的类),这里叫ProtobufGenerator

第二步

在根Project/build.gradle中加入protobuf插件

buildscript {    
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.2' //as3.0以下的要0.8.0版本
    }
}
第三步

在app/build.gradle中加入如下配置,底部加上

apply plugin: 'com.google.protobuf'

android{}中加入

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

android{}同级加入:

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

dependencies中加入protobuf相关依赖

    compile 'com.google.protobuf:protobuf-java:3.1.0'
    compile 'com.google.protobuf:protoc:3.1.0'

大致结构如下:

这里写图片描述

第四步

同步项目

第五步

安装proto支持插件,Settings–>Plugins–>搜索protobuf–>找到Protobuf Support点击安装,重启as即可,此时porto文件会有一个彩环,并且编写proto文件时也会有相应的提示

第六步

在app\src\main目录中新建proto文件夹,并新建对应的proto文件,这里以LoginRequest.proto为例

这里写图片描述

LoginRequest.proto文件内容为:

syntax = "proto3";
//生成的java类所在的包名
package com.zhys.protobufdemo;

//登录请求结构体
message LoginRequest {
    string username = 1;
    string pwd = 2;
}
//登录响应结构体
message LoginResponse {
    int32 code = 1;
    string msg = 2;
}
第七步

Build/Clean Project跑完即可,此时会在\app\build\generated\source\proto中生成对应的java文件,拷出来备用。

这里写图片描述

搭建服务端环境【可选,此步骤为服务端人员开发】

添加protobuf的jar包

本例使用intellij idea创建web项目(Eclipse类似),需要添加proto的jar包

方式一:maven添加protobuf,搜索protobuf即可

这里写图片描述

方式二:直接添加jar包,下载地址–>github的demo中有相关jar包

对外提供登录接口

将上一步骤中生成的LoginRequestOuterClas.java拷贝到本项目中,创建LoginServlet.java

这里写图片描述

LoginServlet.java的代码为:

//次注解需要tomcat7及以上不能才可以运行
@WebServlet("/login.action")
public class LoginServlet extends HttpServlet {
   
    @Override
    pro
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值