Proto3的在IDEA+Gradle项目集成
前文介绍了在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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【实战】阿里云与AWS的体验对比
相信很多人和本座有同样的感受,就是在第一次登录阿里云的服务清单时,一度以为这是AWS的操作界面,因为两者看起来是何其相似。 AWS界面:阿里云界面: 对于UI界面,本座还是比较喜欢用图标来展现产品,给人以带入感。好比Azure的界面。千万别小看了图标,相较于名称,这才是有专利价值的东西。说不定以后某项云服务要独立运营了,这个图标就是它从母公司的传承,而不是千篇一律的“XX云虚拟机服务”,“XX云物联网服务”这样的名称,更何况在移动端用户大概率只会记得图标。 当然我们不能对IT直男的审美有过高要求,赶紧来看下服务对比吧。两相对比,不难发现阿里云主要还是提供一些Infra类的基础服务,像弹性计算、虚拟网络、大数据存储、中间件及其周边的监控、安全、日志服务等。当然也会有一些诸如IoT和区块链的前沿科技,但尚处于起步阶段。而AWS的生态圈可谓是相当丰富了,从终端智能(AWS Deeplense)、AR/VR到云端的开发工具CI/CD。单论IoT,AWS就有IoT分析、IoT设备防护、设备管理、事件追踪、站点智能、识图等十项功能。从功能覆盖面上,阿里云显然逊于AWS。 当然企业的发展阶段不同,相...
- 下一篇
Proto3序列化数到文件与反序列化
proto3序列化很好用,在原来开发APP存数据到日志时,日志文档半小时可达300M,数据量大时对性能有很大影响,因此改用proto序列化存储数据,经测试性能有所提升,日志大小为原来三分之一,所以优势还是很明显的。 但proto3序列化多条消息到文件时,按官方文档介绍,反序列化时是没法区分一个完整对象序列化数据的界限的,也就是没有分隔符,因此需要自己设定分隔符,反序列化时按规则解即可,以下是基于上一篇文章中环境的案例 一、多消息持续序列化规则 每个对象序列化后字节数的长度作为序列化内容前置4个字节的数据,即若一条序列化数据长度为100个字节,那么前这个数据前加4个字节,这4个字节的内容是100,那么总长度就是104个字节,依此规则持续序列化到文件即可 二、定义proto数据结构 syntax = "proto3"; package tutorial; message Person { string name = 1; int32 id = 2; string email = 3; string phone = 4; } 三、序列化测试 /** * 序列化 * * @param path...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境