由于工作关系,许久没有静下心来好好写过一篇博客了。这两天的业余时间都在研究protobuf-swift,其中遇到了不少坑,好记性不如烂笔头,决定好好写一篇博客,仔细记录下来,如果你遇到了同样的问题,可以通过本篇博客绕过弯路。
protocolbuffer是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 、OC、Swift和 python等,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
关于protocolbuffer的更多原理、语法在此不再赘述,请自行查阅相关资料,最好的学习资料是Google的官方资料,地址:https://developers.google.com/protocol-buffers/docs/tutorials 但是需要科学上网,你懂的。
在使用protobuf-swift的过程中,参考外国友人Eckelf and alexeyxo在GitHub上的开源项目,地址:https://github.com/alexeyxo/protobuf-swift 。一顿操作之后,遇到两个问题。
问题1:报错 “--swift_out: protoc-gen-swift: Plugin failed with status code 1.
问题2:报错 Missing output directives
其实问题解决之后,回过头来发现这些问题都是由于自己粗心导致。
废话不多说,开启我们的protobuf-swift之旅。
使用protobuf-swift,我们需要做两件事,一是配置protobuf-swift的Mac编译环境,二是把外国友人封装好的第三方库ProtocolBuffers-Swift集成进我们的项目。
开发环境:Mac 、swift4.0
具体步骤:
1、终端执行命令 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
第一步的目的是安装Homebrew(安装其他应用程序的辅助工具)
2、终端执行命令 brew install automake
第二步的目的是 利用Homebrew安装automake,automake为安装protobuf所需。
3、终端执行命令 brew install libtool
第三步的目的是 利用Homebrew安装libtool,libtool为安装protobuf所需。
4、终端执行命令 brew install protobuf
第四步安装我们的主角儿:protobuf
5、前往https://github.com/alexeyxo/protobuf-swift 下载示例程序 (第5步尤为重要)
5.1 终端 cd 到 刚才下载到示例程序目录 执行命令 ./scripts/build.sh
该步骤的目的是在/usr/local/bin目录下生成protoc-gen-swift文件,该文件是接下来编译 .proto文件的插件,在我们安装protobuf的时候,并没有自动给我们生成该插件,需要我们手动生成。如果没有执行这一步骤,就会遇到问题一所看到的错误。
6、cd 到项目的 .proto文件所在的文件夹 执行命令 sh
第6步作用 sh命令是shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取。通过用户输入命令,和内核进行沟通
7、执行命令 protoc (此处修改为你的.proto文件名).proto --swift_out="./"
如果第7步命令有误,就会遇到问题二所示的错误
经过以上这些步骤就可以在.proto文件所在的文件夹下得到我们最终想要的 .proto.swift 文件