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

作者: 电一闪 | 来源:发表于2016-07-07 15:10 被阅读880次

    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
    

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/iycljttx.html