打包過程html
xcodebuild負責將工程源文件編譯成xxx.appshell
xcrun負責給xxx.app(簽名並)打包成xxx.ipaxcode
第一步清理:xcodebuild cleanbash
第二步編譯:xcodebuildapp
第三步打包:xcrun -sdk iphoneos PackageApplication -v path/To/xxx.app -o xxx.ipaiphone
bash shell入門:ide
http://www.aka.org.cn/Lectures/002/Lecture-2.1.2/index.htmlui
使用getopts命令使用this
:表示有參數須要值spa
#!/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