添加自动编译脚本,提高ProtoBuf使用效率

ProtoBuf使用流程,及脚本编译改进方案##

ProtoBuf的环境搭建不在本文讨论范围内,具体可参考github中的介绍前篇文章,有兴趣的朋友可留言,我会解答。
  起初使用ProtoBuf协议,我将编译代码保存到文档中,每次使用拷贝到Terminal中执行,执行完再将生成的.h和.m文件复制替换到工程目录中。编译代码如下:

/Users/xxx/Documents/Code/Github/protobuf/src/protoc --objc_out=/Users/xxx/Desktop/proto -I /Users/xxx/Desktop/proto /Users/xxx/Desktop/proto/miqu.proto
//第一段/Users/xxx/Documents/Code/Github/protobuf/src/protoc指定protoc路径
//第二段--objc_out=/Users/xxx/Desktop/proto指定objc模型文件输出路径
//第三段-I /Users/xxx/Desktop/proto指定proto协议文件输入目录
//第四段/Users/xxx/Desktop/proto/miqu.proto指定协议文件路径

如果在开发初期,协议一天五变,反复编译拷贝非常浪费时间。于是把上面这串命令改成脚本,放在最终要用的模型文件目录下,如下图:

.sh是脚本文件

针对iOS平台的编译脚本文件内容如下:
#!/bin/bash
currentPath=dirname $0
echo
echo "当前工作目录:$currentPath"
echo
cd $currentPath
/Users/系统用户名/Documents/Code/Github/protobuf/src/protoc --objc_out=./ -I./ ./miqu.proto

将sh文件跟terminal关联起来,双击可自动打开执行

最后要补充一点的是,针对安卓平台的特殊性,需要在每个类文件的定义前先声明所在包的包名,因此编译脚本需要额外对ProtoBuffer模型类的包名声明做额外处理。故脚本结构如下:

#!/bin/bash

currentPath=`dirname $0`
echo
echo "当前工作目录:$currentPath"
echo
cd $currentPath
/Users/系统用户名/Documents/Code/Github/protobuf/src/protoc --java_out=./app/src/main/java/cn/xxx/package/name/protocal/ -I./ ./marriage.proto
echo "protoc编译完毕,往文件头添加包名"
cd ./app/src/main/java/cn/xxx/package/name/protocal
packageName='package cn.xxx.package.name;'
echo $packageName > ./package_name.txt
cat ./Marriage.java >> ./package_name.txt
mv ./package_name.txt ./Marriage.java
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容