Protobuf | 如何在 MAC 上安装 Protobuf 编译 proto 文件
- 如果评论区没有及时回复,欢迎来公众号:ByteCode 咨询
- 公众号:ByteCode。致力于分享最新技术原创文章,涉及 Kotlin、Jetpack、算法、译文、系统源码相关的文章
相关系列:
- Protobuf | 安装 Gradle 插件编译 proto 文件
- Protobuf | 如何在 ubuntu 上安装 Protobuf 编译 proto 文件
- Protobuf | 如何在 MAC 上安装 Protobuf 编译 proto 文件
为什么需要配置 Protobuf 环境
因为 Protobuf 是 Google 开源的跨语言编码协议,所以它使用特殊的语法,需要使用 protoc 命令编译成我们需要的语言,目前 Protobuf 可以编译成 6 中语言,分别是:C++
、C#
、Dart
、Go
、Java
、Python
。
Protobuf 环境搭建
在 MAC 上配置 Protobuf 环境,相比于 ubuntu 和 Gradle 插件的方式,要简单很多,首先执行以下命令下载Protobuf 编译需要的依赖。
brew install automake |
下载 protobuf 源码并编译
git@github.com:protocolbuffers/protobuf.git |
按照上面所示的命令依次执行完,等待 10 ~ 20 分钟左右,即可安装成功,等待安装完成之后,执行以下命令验证是否安装成功。
protoc --version |
如果出现以下信息代表安装成功。
libprotoc 3.12.3 |
接下来就可以开始编译 proto 文件,请参考文末 常见问题 的解决方案。
编写 proto 文件测试
1. 创建 Person.proto
文件,添加以下内容
syntax = "proto3"; |
syntax
:指定 protobuf 的版本,如果没有指定默认使用 proto2,必须是.proto文件的除空行和注释内容之外的第一行option
:表示一个可选字段java_package
: 指定生成 java 类所在的包名java_outer_classname
: 指定生成 java 类的名字
message
中包含了一个 string 类型的字段(name)。注意 :=
号后面都跟着一个字段编号- 每个字段由三部分组成:字段类型 + 字段名称 + 字段编号,在 Java 中每个字段会被编译成 Java 对象,其他语言会被编译其他语言类型
2. 执行 protoc 命令
以输出 Java 文件为例,执行以下命令即可输出对应的 Java 文件。
protoc --java_out=./src/main/java -I=./ *.proto |
--java_out
: 指定输出的 Java 文件所在的目录-I
:指定 proto 文件所在的目录*.proto
: 表示在-I
指定的目录下查找 以.proto
文件结尾的文件
常见错误
错误一:Library not loaded
执行 make
命令,如果出现下列错误。
Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib |
执行以下命令即可解决。
cd /usr/local/opt/readline/lib |
错误二:No syntax specified for the proto file
执行 protoc 命令,编译 proto 文件,出现以下错误。
[libprotobuf WARNING google/protobuf/compiler/parser.cc:648] No syntax specified for the proto file: test.proto. Please use 'syntax = "proto2";' or 'syntax = "proto3";' to specify a syntax version. (Defaulted to proto2 syntax.) |
原因是因为没有指定版本号,在 proto 文件第一行添加以下代码即可解决。
syntax = "proto3"; // 或者 proto2 |
总结
在 MAC 上配置 Protobuf 环境,相比于 ubuntu 和 Gradle 插件的方式,要简单很多,只要按照命令依次执行,基本上不会太大问题。
如果在安装过程中遇到了任何问题,欢迎在评论区留言,一起来完善这份教程,如果没有及时回复,可以来公众号:ByteCode 咨询。
- 本文作者:hi-dhl
- 本文标题:Protobuf | 如何在 MAC 上安装 Protobuf 编译 proto 文件
- 本文链接:https://hi-dhl.com/2020/10/28/android/05-probuff-mac/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 hi-dhl