網上看到乙個build ios工程並打包的指令碼,寫的很不錯,學習了下,並新增部分注釋,方便理解
執行:1. 若當前工程目錄為helloworld,進入上一級目錄
2. 在終端輸入:./ipa-build helloworld
3. 編譯完成,會在helloworld下面產生乙個build的目錄。
#!/bin/bash
#--------------------------------------------
# 功能:編譯xcode專案並打ipa包
# 使用說明:
#編譯project
#ipa-build [-c ] [-o ] [-t ] [-n]
#編譯workspace
#ipa-build -w -s [-c ] [-n]
## 引數說明:-c name工程的configuration,預設為release。
#-o path 生成的ipa檔案輸出的資料夾(必須為已存在的檔案路徑)預設為工程根路徑下的」build/ipa-build「資料夾中
#-t name 需要編譯的target的名稱
#-w編譯workspace
;;"c")
tmp_optind=$optind
tmp_optname=$optname
tmp_optarg=$optarg
optind=$optind-1
if getopts $param_pattern optname ;then
echo "error argument value for option $tmp_optname"
exit 2
fioptind=$tmp_optind
build_config=$tmp_optarg
;;"o")
tmp_optind=$optind
tmp_optname=$optname
tmp_optarg=$optarg
optind=$optind-1
if getopts $param_pattern optname ;then
echo "error argument value for option $tmp_optname"
exit 2
fioptind=$tmp_optind
cd $tmp_optarg
output_path=$(pwd)#獲取輸出的當前路徑
if [ ! -d $output_path ];then
echo "error!the value of option o must be an exist directory."
exit 2
fi;;
"w")
workspace_name='*.xcworkspace'
ls $project_path/$workspace_name &>/dev/null #/dev/null 表示空裝置,把輸出資訊匯入到空的裝置,即不顯示輸出資訊
#$?是判斷最近一句是否成功,即上一句語句是否執行成功?
rtnvalue=$?
#basename 命令讀取 string 引數,刪除以 /(斜槓) 結尾的字首以及任何指定的 suffix 引數,並將剩餘的基本檔名稱寫至標準輸出
if [ $rtnvalue = 0 ];then
build_workspace=$(echo $(basename $project_path/$workspace_name))
else
echo "error!current path is not a xcode workspace.please check, or do not use -w option."
exit 2
fi;;
"s")
tmp_optind=$optind
tmp_optname=$optname
tmp_optarg=$optarg
optind=$optind-1
if getopts $param_pattern optname ;then
echo "error argument value for option $tmp_optname"
exit 2
fioptind=$tmp_optind
build_scheme=$tmp_optarg
;;#通過這段邏輯處理,可以獲取-s後跟著的引數,即將optarg的值取出來
"t")
tmp_optind=$optind
tmp_optname=$optname
tmp_optarg=$optarg
optind=$optind-1
if getopts $param_pattern optname ;then
echo "error argument value for option $tmp_optname"
exit 2
fioptind=$tmp_optind
build_target=$tmp_optarg
build_cmd=$' -workspace '$' -scheme '$' -configuration '$' configuration_build_dir='$' only_active_arch=no'
else
#編譯project
build_cmd=$' -configuration '$
if [ "$build_target" != "" ];then
build_cmd=$' -target '$
fi
IOS工程自動打包並發布指令碼實現
ios xcode 自動打包 ci 目錄 ios的開發過程中,當需要給測試人員發布測試包的時候,直接使用xcode來做的效率是非常低下的。尤其是當有一點小改動需要重新出包時,那簡直是個折磨的人的工作。通過一番研究後,遂決定寫一系列指令碼,以代替人工完成打包和發布的過程。借助xcode所附帶的 com...
IOS工程自動打包並發布指令碼實現
ios的開發過程中,當需要給測試人員發布測試包的時候,直接使用xcode來做的效率是非常低下的。尤其是當有一點小改動需要重新出包時,那簡直是個折磨的人的工作。通過一番研究後,遂決定寫一系列指令碼,以代替人工完成打包和發布的過程。借助xcode所附帶的 command line tools 可以通過命...
Qt工程打包發布
qt程式打包發布方法 使用官方提供的windeployqt工具 qt 官方開發環境使用的動態鏈結庫方式,在發布生成的exe程式時,需要複製一大堆 dll,如果自己去複製dll,很可能丟三落四,導致exe在別的電腦裡無法正常執行。因此 qt 官方開發環境裡自帶了乙個工具 windeployqt.exe...