前文介绍了在Android环境中集成,因为需要对序列化数据文件进行反序列化,所以需要一个java脚本,因此才有了此文,基于IDEA+Gradle集成proto网上也有很简便介绍,直接在IDEA中添加proto插件即可,但怕有版本问题,影响后面反序列化,白折腾,故想自己添加,下面都介绍
一、添加IDEA插件方式集成
在IDEA中依次点击"File"-->"Settings"-->"Plugins"-->"Browse repositories"后,输入Protobuf,找到Protobuf Support后安装重启IDEA即可,*.proto文件将会支持高亮语法显示,此方法网上案例很多,不过多介绍
可参考:https://www.cnblogs.com/liugh/p/7505533.html
二、手动添加版本集成
1. 新建Gradle项目
以正常方式在IDEA新建一个Gradle项目即可
2. 项目build.gradle配置
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.10'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
plugins {
id 'java'
}
apply plugin: 'application'
apply plugin: 'com.google.protobuf'
group 'cn.starcart'
version '1.0.1'
sourceCompatibility = 1.8
mainClassName = 'cn.starcart.Main'
sourceSets {
main {
java {
srcDirs 'src/main/java', 'src/generated/main/java'
}
proto {
srcDir 'src/main/proto' //指定.proto文件路径
}
}
}
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.8.0'
}
generateProtoTasks {
all().each { task ->
task.builtins {
java {
option "lite"
}
}
}
}
//生成目录
generatedFilesBaseDir = "$projectDir/src/generated"
}
repositories {
mavenCentral()
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'com.google.protobuf', name: 'protobuf-java', version: '3.8.0'
}
3. 如上gradle文件配置,在src/main下增加proto目录,存放.proto文件
4. build项目或者执行gradle的build任务即可在src目录下生成generated目录,对应proto文件生成java实体类
其他介绍
proto3语法定义:https://developers.google.com/protocol-buffers/docs/proto3
proto3和proto2的区别参考:http://www.cppblog.com/sunicdavy/archive/2016/01/25/212739.html