IOS IOS工程自動打包並發布指令碼實現

2021-06-17 00:52:16 字數 2778 閱讀 8595

網上看到乙個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...