ProtoBuf是Google的一个开源项目。作用于数据存储、数据通信和语言无关平台无关,扩展便捷。它是基于二进制的一个灵活、高效、自动化的序列化和结构化数据格式,比XML协议的数据格式更小,更快和更简单。你可以定义你想要的数据结构,然后使用ProtoBuf提供的编译器生成相应平台的源代码,编译器自动化会生成读写你结构化数据代码,然后可以把源码应用于各种语言,你甚至可以在更新数据结构情况下不破坏已经部署基于老格式编译程序(此段抄的google的)。
protocolbuffers 项目 github
在AndroidStudio项目中使用Proto,可以使用android studio插件,这样就节省了我们手动去敲命令的时间,也方便了很多
集成步骤
- 在app的gradle中添加插件
apply plugin: 'com.google.protobuf'//添加插件
- 在app的gradle中添加如下代码
//添加此段
protobuf {
//配置protoc编译器
protoc {
artifact = 'com.google.protobuf:protoc:3.0.0-alpha-3'
}
//配置生成java插件
plugins {
javalite {
artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
}
}
//这里配置生成目录,编译后会在build的目录下生成对应的java文件
generateProtoTasks {
all().each { task ->
task.plugins {
javalite {}
}
}
}
}
在app的gradle下的dependencies下添加依赖
compile 'com.google.protobuf:protobuf-lite:3.0.0'//添加此行代码
在project的gradle下添加如下代码
buildscript {
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.2'//添加此行代码
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
然后syn 同步gradle...
-
在项目中新建proto文件夹,将各.proto文件都放在这里
image.png
- .proto文件的编写
//proto的版本
syntax = "proto3";
//如果设置生成的Java文件也将会自动存放到指定输出目录下的demo.app.com.protocolbufferdemo目录中。
//如果没有设置,Java的包名则为package关键字指定的名称
option java_package = "demo.app.com.protocolbufferdemo";
//如果设置生成的java文件名为TestBean,如果没有设置默认名为.proto文件名
option java_outer_classname = "UserBean";
message TestBean{
required int64 id = 1;
optional string name = 2;
repeated string msg = 3;
}
说明
- java_package:包名
- java_outer_classname:类名
- ProductInfo:对象名
- required:必须有值
- optional:可以不写值
- repeated: 在一个message中可以重复任意次(包括0),但是会保留他们的顺序。
- string:相当于Java中的String
- int32:相当于Java中的int
具体可以看官方api
-
clear --->rebuild
最终在app下的build中生成java bean
image.png

-
8正常使用,set和get方法
image.png
网友评论