美文网首页
自动化打包

自动化打包

作者: 焚琴煮鹤de我 | 来源:发表于2016-03-31 21:35 被阅读330次

    最近在尝试自动化打包,毕竟每次xcode打包还是挺麻烦的

    网上有很多教程,选择适合自己的需求的就好


    facebook 的xctool

    fastlane 的gym

    集成Jenkins的(我的需求没那么高,只是要自动化打包和上传fir而已)


    自然也就有着不同的准备工作的咯

    安装工具

    因为系统更新到eicapitain,所以很多同学用HomeBrew或者gym 安装工具的时候都可能会出现Permition denied 的提示

    两种方法:

    1 去掉系统的rootless的设置

    2 我的做法,安装的时候指定目录

    brew install xctool(xctool)

    gem install -n /usr/local/bin gym(fastlane)

    gem install -n /usr/local/bin fir-cli(fir 上传)

    安装好这些工具,就可以开始尝试先用xcode打一次包,确认的证书和provison文件是对的


    fastlane 的打包脚本

    #!/bin/bash
    
    #计时
    SECONDS=0
    
    #假设脚本放置在与项目相同的路径下
    project_path=$(pwd)
    #取当前时间字符串添加到文件结尾
    now=$(date +"%Y_%m_%d_%H_%M_%S")
    
    #指定项目的scheme名称
    scheme="tete"
    #指定要打包的配置名
    configuration="development"
    #指定打包所使用的输出方式,目前支持app-store, package, ad-hoc, enterprise, development, 和developer-id,即xcodebuild的method参数
    export_method='development'
    
    #指定项目地址
    workspace_path="$project_path/tete.xcworkspace"
    #指定输出路径
    output_path="/Users/chengxun/Desktop/"
    #指定输出归档文件地址
    archive_path="$output_path/tete_${now}.xcarchive"
    #指定输出ipa地址
    ipa_path="$output_path/tete_${now}.ipa"
    #指定输出ipa名称
    ipa_name="tete_${now}.ipa"
    #获取执行命令时的commit message
    commit_msg="$1"
    
    #输出设定的变量值
    echo "===workspace path: ${workspace_path}==="
    echo "===archive path: ${archive_path}==="
    echo "===ipa path: ${ipa_path}==="
    echo "===export method: ${export_method}==="
    echo "===commit msg: $1==="
    
    #先清空前一次build
    gym --workspace ${workspace_path} --scheme ${scheme} --clean --configuration ${configuration} --archive_path ${archive_path} --export_method ${export_method} --output_directory ${output_path} --output_name ${ipa_name}
    
    #上传到fir
    fir publish ${ipa_path} -T fir_token -c "${commit_msg}"
    
    #输出总用时
    echo "===Finished. Total time: ${SECONDS}s==="
    

    xctool的打包脚本

    #!/bin/bash
    
    #计时
    SECONDS=0
    
    #假设脚本放置在与项目相同的路径下
    project_path=$(pwd)
    #取当前时间字符串添加到文件结尾
    now=$(date +"%Y_%m_%d_%H_%M_%S")
    
    #指定项目的scheme名称
    scheme="tete"
    #指定要打包的配置名
    configuration="Adhoc"
    #指定打包所使用的provisioning profile名称
    provisioning_profile='qiaoshouteteIdentifier'
    
    #指定项目地址
    workspace_path="$project_path/tete.xcworkspace"
    #指定输出路径
    output_path="/Users/chengxun/Desktop/"
    #指定输出归档文件地址
    archive_path="$output_path/tete${now}.xcarchive"
    #指定输出ipa地址
    ipa_path="$output_path/tete_${now}.ipa"
    #获取执行命令时的commit message
    commit_msg="$1"
    
    #输出设定的变量值
    echo "===workspace path: ${workspace_path}==="
    echo "===archive path: ${archive_path}==="
    echo "===ipa path: ${ipa_path}==="
    echo "===profile: ${provisioning_profile}==="
    echo "===commit msg: $1==="
    
    #先清空前一次build
    xctool clean -workspace ${workspace_path} -scheme ${scheme} -configuration ${configuration}
    
    #根据指定的项目、scheme、configuration与输出路径打包出archive文件
    xctool build -workspace ${workspace_path} -scheme ${scheme} -configuration ${configuration} archive -archivePath ${archive_path}
    
    #使用指定的provisioning profile导出ipa
    #我暂时没找到xctool指定provisioning profile的方法,所以这里用了xcodebuild
    xcodebuild -exportArchive -archivePath ${archive_path} -exportPath ${ipa_path} -exportFormat ipa -exportProvisioningProfile "${provisioning_profile}"
    
    #上传到fir
    #fir publish ${ipa_path} -T fir_token -c "${commit_msg}"
    
    #输出总用时
    echo "===Finished. Total time: ${SECONDS}s==="
    

    对比下两者

    fastlane gym: 1 速度快 2 有dysm文件 3 不用指定provison文件

    xctool: 相比下就要弱一些咯 看图就知道咯

    相关文章

      网友评论

          本文标题:自动化打包

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