美文网首页
一条命令 快速配置 Xcode 各种 环境

一条命令 快速配置 Xcode 各种 环境

作者: figs | 来源:发表于2016-08-11 18:06 被阅读0次

    开发时经常需要提交ipa 每次手动打包 有点麻烦

    理想的情况时执行一条命令 就自动打包生成ipa

    但是生成ipa之前 测试环境和正式环境一些参数是不同的. 比如网络环境 肯定有测试和线上接口 还有我们用的小米推送也有测试和线上环境之分  还有证书和授权文件选择.

    大概研究了下  这些都可以通过修改文件内容来达到目的

    而修改文件内容就用 sed 强大的编辑功能

    课前补充知识sed命令详解http://my.oschina.net/u/727843/blog/731288

    参考我的配置  先贴出来 一步一步走

    1进入项目目录  xxxx:项目绝对路径  获取项目名称

    #指定编译模式

    build_model="Debug"

    project_path="xxxxx"

    cd ${project_path}

    project_name=$(ls | grep xcodeproj | awk -F.xcodeproj'{print $1}')

    2 info.plist 相关配置

    这里要用到/usr/libexec/PlistBuddy 专门修改.plist文件

    project_infoplist_path=${project_path}/${project_name}/Info.plist

    PlistBuddy="/usr/libexec/PlistBuddy

    取版本号

    bundleShortVersion=$(${PlistBuddy} -c"print CFBundleShortVersionString"${project_infoplist_path})

    取build值

    bundleShortVersion=$(${PlistBuddy} -c"print CFBundleVersion"${project_infoplist_path})

    小米推送设置

    MiSDKRunKey="MiSDKRun"

    MiSDKRun=$(${PlistBuddy} -c"print $MiSDKRunKey"${project_infoplist_path})

    #不存在添加 不同则修改

    if [ "$MiSDKRun" = "" ]; then

     #由于没有添加字段 和 值为"" 空 无法区分判断 索性都先删除

     ${PlistBuddy} -c "delete :$MiSDKRunKey" ${project_infoplist_path}

     ${PlistBuddy} -c"add :$MiSDKRunKey string $build_model"${project_infoplist_path}

     echo"add $MiSDKRunKey"

    elif [ "$MiSDKRun" != "$build_model" ]; then

      ${PlistBuddy} -c"set :$MiSDKRunKey $build_model"${project_infoplist_path}

      echo"update $MiSDKRunKey"

    fi

    ${PlistBuddy} -c "delete :$MiSDKRunKey" ${project_infoplist_path}

    3修改配置文件

    #自定义配置文件 路径  

    configure_path="${project_name}/Classes/Tools/YXQCommon.h"

    sed -i "" "s?#define REVIEW_MODE[^\n]*?#define REVIEW_MODE       0?"${configure_path}

    #-i "" 是必须的 为了备份 为空的话就不备份

    #只是改了个宏定义 根据它来判断 用什么接口 为0是测试环境 1 为正式环境

    获取大概位置 修改授权文件 证书配置

    #自定义项目文件相对路径

    project=${project_name}.xcodeproj/project.pbxproj

    sed 一般只支持单行 项目文件明显是多行 就要倒找需要更改的行数范围

    这样搜索的都是通用字符串 配置文件更改行数改变后 依然可以搜索到所在范围

    #/End XCBuildConfiguration section 打开看.pbxproj详情 只有这个字符串固定

    #找到匹配字符串所在行

    debugTag="Debug[^\n]*{"

    releaseTag="Release[^\n]*{"

    endTag="End XCBuildConfiguration section"

    debug=`sed -n "/$debugTag/=" ${project}`

    #debugTag搜索出来会有两个结果 需要改变的行数是后面匹配到的 所以取结果的第二行

    debug=`echo "$debug" | sed -n "2p"`

    release=`sed -n "/$releaseTag/=" ${project}`

    release=`echo "$release" | sed -n "2p"`

    end=`sed -n "/$endTag/=" ${project}`

    #打印行数

    echo "debug = $debug release = $release end = $end"

    start=$debug

    end=$release

    #打印行数看看

    echo "start = $start end = $end"

    自定义debug授权文件 自行查看 需要更换时更换

    自定义debug证书 自行查看 需要更换时更换

    profile="xxxxx"

    identity="\"iPhone Developer: xx \(xxxxx\)\";"

    #release 相关证书 授权文件也要单独配置

    sed -i "" -e "$start,$end s/\(PROVISIONING_PROFILE = \"\).*\"/\1$profile\"/g"  -e "$start,$end s/\([^{]*CODE_SIGN_IDENTITY[^{]* = \)\([^{]*\)/\1$identity/"  ${project}

    #sed 多行匹配 多点修改 模式

    #改变指定行范围的匹配字符串 不加g 只处理第一次匹配  加上p会 多插入一行 -e 多点编辑

    #这里也要去补一下正则了 .* 任意n个非空字符    [^{]* 任意n个非{ 字符

    如果有其他需要修改的 照着修改就行了

    其他配置也可自行设置

    到这里 xcode 相关配置 修改已完成 下一步就是 打包了

    #之前研究过IOS工程自动打包并发布脚本实现http://my.oschina.net/u/727843/blog/391946可以去看看

    有个更强大的工具 就是fir了http://fir.im/

    自动配置itms-services://协议 只需提供ipa  还提供了一键打包发布相关命令

    1首先要自定义 更新log 吧

    请求输入内容 回车后继续执行下一步

    echo -n "enter chages log:"

    read log

    fir_log="$log \n测试\n fir auto debug"

    echo -e"log is $fir_log \nnow goon."

    2打包并发布到fir

    #token fir 网站获取

    fir_token="xxxxx"

    #自定义 ipa 保存路径

    out_path="/Users/xx/Desktop/ipa/$build_model"

    #如果path 不存在创建下

    if [ ! -x"$out_path" ]; then

      mkdir"$out_path"

    fi

    #获取当前系统时间

    time=`date +%y-%m-%d:%Hh%Mm%Ss`

    #根据时间 版本号等定义ipa name

    name="$build_model+$project_name-$bundleShortVersion-$bundleVersion+$time"

    echo"the ipa name is $name.ipa"

    #fir 打包上传命令

    fir build_ipa -o ${out_path} -w -S ${project_name} -n "$name"-C ${build_model} -p -c ${fir_log} -Q -T ${fir_token}

    其他相关配置查看 fir官网https://github.com/FIRHQ/fir-cli/blob/master/README.md

    3如果上传完成后 想更改ipa 名字

    echo -n"enter name (rename the ipa):"

    readlog

    if [ "$log" = "" ]; then

      echo "input name is null"

    else

      cd ${out_path}

      mv $name.ipa $log.ipa

      echo "renamed the ipa"

    fi

    主要是懒  经常忘记 这些配置文件更改.

    我去不能上传附件?一键配置debug环境并fir打包上传.sh 

    把已上命令放在一个文件里  用终端打开执行就可以了 

    终端可以设置    exit 自动关闭窗口 当shell完全退出后关闭

    如果你会用 alfred 就更方便了

    相关文章

      网友评论

          本文标题:一条命令 快速配置 Xcode 各种 环境

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