美文网首页
xcode中如何每次编译是能够自动更改build

xcode中如何每次编译是能够自动更改build

作者: 阿弥妥佛 | 来源:发表于2017-06-23 17:39 被阅读0次

    <h2>第一步</h2>
    先在Info.plist中新增一个行,key名字为:buildTime value不用设值。
    <h2>第二步</h2>
    选中Application工程target-》buildPhase-》在copy 资源前,添加如下脚本:

    #执行文件名字,一般跟创建工程文件夹名字相同
    EXECUTABLE_NAME="${EXECUTABLE_NAME}"
     
     
    
    #工程目录路径
    PROJECT_DIR="${PROJECT_DIR}"
    EXECUTABLE_NAME="${EXECUTABLE_NAME}"
    
    #工程plist路径
    project_infoplist_path="${PROJECT_DIR}/${EXECUTABLE_NAME}/Info.plist"
    #echo $project_infoplist_path > ${PROJECT_DIR}/${EXECUTABLE_NAME}/project_infoplist_path.txt
     
    
    #编译时间
    buildTime=`date +%Y-%m-%d'+'%H:%M`
    #echo $buildTime > ${PROJECT_DIR}/${EXECUTABLE_NAME}/buildTime.txt
    #echo $buildTime > ${PROJECT_DIR}/buildTime.txt
    
    #修改的命令行
    modifyCmdString="'""Set :buildTime"" "${buildTime}"'"
    #echo $modifyCmdString
    
    destinationCmd="/usr/libexec/PlistBuddy -c "${modifyCmdString}"  ${project_infoplist_path}"
    #echo "cmd    :\n "${destinationCmd}
    
    #解决无法使用``进行执行问题,执行PlistBuddy处理Info.plist
    a="/usr/libexec/PlistBuddy"
    a2="-c"
    b="'Set :buildTime ${buildTime}'"
    c="${project_infoplist_path}"
    eval ${a}" "${a2}" "${b}" "${c}
    

    buildPhrase脚本添加结果示意:


    image.png

    <h2>如何在程序中显示?</h2>
    代码如下:

    #ifdef DEBUG
            _appBuild = [NSString stringWithFormat:@"%@_(%@)",infoDic[@"innerBuild"],infoDic[@"buildTime"]];
    #else
            _appBuild = infoDic[@"innerBuild"];
    #endif
    

    提供的方法中EXECUTABLE_NAME很关键

    写这个脚本用了很多时间,因为中间遇到了shell脚本无法执行脚本字符串

    最后只能找到一个eval的方式来解决

    猜测之所以是这样是因为会出现字符串编码转换问题或则是shell脚本内部机制问题

    参考的附录:如何知道xcode build过程中会产生哪些宏变量 http://blog.csdn.net/fly52035/article/details/45894763

    相关文章

      网友评论

          本文标题:xcode中如何每次编译是能够自动更改build

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