添加自动编译脚本,提高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指定协议文件路径

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

添加自动编译脚本,提高ProtoBuf使用效率_第1张图片
.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

添加自动编译脚本,提高ProtoBuf使用效率_第2张图片
将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

你可能感兴趣的:(添加自动编译脚本,提高ProtoBuf使用效率)