Protobuf | 安装 Gradle 插件编译 proto 文件
- 如果评论区没有及时回复,欢迎来公众号:ByteCode 咨询
- 公众号:ByteCode。致力于分享最新技术原创文章,涉及 Kotlin、Jetpack、算法、译文、系统源码相关的文章
相关系列:
- Protobuf | 安装 Gradle 插件编译 proto 文件
- Protobuf | 如何在 ubuntu 上安装 Protobuf 编译 proto 文件
- Protobuf | 如何在 MAC 上安装 Protobuf 编译 proto 文件
前言
Google 除了提供命令行的方式编译 proto 文件,还提供了 AndroidStudio 插件 protobuf-gradle-plugin 来编译 proto 文件。
如何在项目中添加 Gradle 插件
在项目中添加 Gradle 插件编译 proto 文件,非常简单,我先给出全部配置,文件内容比较长,稍后会逐个分析,将下列内容添加在 protobuf 文件所在的 module 的 build.gradle 文件内。
/** |
只需要将上面的内容添加在 protobuf 文件所在的 module 的 build.gradle 文件内,就可以开始编译 proto 文件,proto 文件默认存放路径 src/main/proto
,需要在该目录下新建 proto 文件。
新建 Person.proto
文件,添加以下内容
syntax = "proto3"; |
之后点击 Build -> Rebuild Project,即可生成对应的 Java 文件,默认生成目录 $buildDir/generated/source/proto
接下里我们来分析如何在项目中添加 Gradle 插件编译 proto 文件,别看文件内容很长,总共拆分下来只需要三步。
步骤一:添加 Protobuf 插件
AndroidStudio 提供了两种方式 plugins{...}
和 apply plugin
,来添加 Protobuf 插件
- 使用
apply plugin
方法
apply plugin: "com.google.protobuf" |
- 使用
plugins{...}
方法,
plugins { |
建议使用 plugins{...}
方式,在 AndroidStudio 4.1 以上,创建项目的时候,已经将 apply plugin
方法替换为 plugins{...}
步骤二:配置 protoc 命令
注意: protoc
命令,分为不同的版本,版本不同配置的方式不同,网上大部分都是 3.0.x ~ 3.7.x 的配置方式,关于这种配置方法,可以查看 protobuf-gradle-plugin 文档,这里不在演示了,也不建议使用。
我们直接来看看 protoc >= 3.8
之后的方法,添加下面内容到 protobuf 文件所在的 module 的 build.gradle 文件内。
protobuf { |
通过 artifact 指定的 protoc 的版本号,需要与 添加 protobuf 需要的依赖 的版本相同。
默认生成目录 $buildDir/generated/source/proto
可以通过 generatedFilesBaseDir
改变生成位置。
protobuf { |
步骤三:添加 protobuf 需要的依赖
// 这里是用的是 javalite 版本 |
只需要完成前面三步,就可以开始编译 proto 文件,每次 proto 文件内容变更的时候,只要重新点击 Build -> Rebuild Project,即可生成对应的 Java 文件。
proto 文件默认存放路径是 src/main/proto
, 可以添加下面配置更改 proto 文件存放的位置。
android { |
常见问题
错误一:编译没有报错,为什么没有生成对应的目标文件?
如果没有更改 proto 文件存储路径,默认存放路径是 src/main/proto
,请检查你的 proto 文件存放位置是否正确
总结
安装 Gradle 插件编译 proto 文件,相比于 ubuntu 和 MAC 安装方式,要复杂点,但是用起来是相当方便的,如果在使用过程中遇到了任何问题,欢迎在评论区留言,一起来完善这份教程,如果没有及时回复,可以来公众号:ByteCode 找我咨询。
- 本文作者:hi-dhl
- 本文标题:Protobuf | 安装 Gradle 插件编译 proto 文件
- 本文链接:https://hi-dhl.com/2020/10/28/jetpack/05-probuff-AndroidStudio/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 hi-dhl