xcodebuild和xcrun自动化编译ipa包 笔记

打包过程

xcodebuild负责将工程源文件编译成xxx.app

xcrun负责给xxx.app(签名并)打包成xxx.ipa


第一步清理:xcodebuild  clean

第二步编译:xcodebuild

第三步打包:xcrun -sdk iphoneos PackageApplication -v path/To/xxx.app -o xxx.ipa


bash shell入门:

http://www.aka.org.cn/Lectures/002/Lecture-2.1.2/index.html

使用getopts命令使用

:表示有参数需要值

#!/bin/bash  
while getopts h:ms option  
do   
    case "$option" in  
        h)  
            echo "option:h, value $OPTARG"  
            echo "next arg index:$OPTIND";;  
        m)  
            echo "option:m"  
            echo "next arg index:$OPTIND";;  
        s)  
            echo "option:s"  
            echo "next arg index:$OPTIND";;  
        \?)  
            echo "Usage: args [-h n] [-m] [-s]"  
            echo "-h means hours"  
            echo "-m means minutes"  
            echo "-s means seconds"  
            exit 1;;  
    esac  
done  

在使用getopts命令的时候,shell会自动产生两个变量OPTIND和OPTARG。OPTIND初始值为1,其含义是下一个待处理的参数的索引。只要存在,getopts命令返回true,所以一般getopts命令使用while循环;

在while循环中判断 

if getopts $param_pattern optname ;then  
            echo  "Error argument value for option $tmp_optname"  
            exit 2  
        fi  

可以判断参数值是否是下个参数名称,如果是,就退出

#判断输入参数是否大与0  
if [ $# -lt 1 ];then  
    echo "Error! Should enter the root directory of xcode project after the ipa-build command."  
    exit 2  
fi  
  
#判断第一个参数是否是目录  
if [ ! -d $1 ];then  
    echo "Error! The first param must be a directory."  
    exit 2  
fi  


xcodebuild使用

sage: xcodebuild [-project <projectname>] [[-target <targetname>]...|-alltargets] [-configuration <configurationname>] [-arch <architecture>]... [-sdk [<sdkname>|<sdkpath>]] [<buildsetting>=<value>]... [<buildaction>]...  
       xcodebuild -workspace <workspacename> -scheme <schemeName> [-configuration <configurationname>] [-arch <architecture>]... [-sdk [<sdkname>|<sdkpath>]] [<buildsetting>=<value>]... [<buildaction>]...  
       xcodebuild -version [-sdk [<sdkfullpath>|<sdkname>] [<infoitem>] ]  
       xcodebuild -list [[-project <projectname>]|[-workspace <workspacename>]]  
       xcodebuild -showsdks  
Options:  
    -usage                print full usage  
    -verbose              provide additional status output  
    -project NAME         build the project NAME  
    -target NAME          build the target NAME  
    -alltargets           build all targets  
    -workspace NAME       build the workspace NAME  
    -scheme NAME          build the scheme NAME  
    -configuration NAME   use the build configuration NAME for building each target  
    -xcconfig PATH        apply the build settings defined in the file at PATH as overrides  
    -arch ARCH            build each target for the architecture ARCH; this will override architectures defined in the project  
    -sdk SDK              use SDK as the name or path of the base SDK when building the project  
    -parallelizeTargets   build independent targets in parallel  
    -jobs NUMBER          specify the maximum number of concurrent build operations  
    -showsdks             display a compact list of the installed SDKs  
    -list                 lists the targets and configurations in a project, or the schemes in a workspace  
    -find BINARY          display the full path to BINARY in the provided SDK  
    -version              display the version of Xcode; with -sdk will display info about one or all installed SDKs  

你可能感兴趣的:(ios,打包,自动编译)