Xcode使用Run Script快速打測(cè)試包并上傳到FTP

一般項(xiàng)目到了測(cè)試階段,給內(nèi)部非iOS開(kāi)發(fā)人員分發(fā)測(cè)試包就成了必不可少的工作。常用的打包方式是使用Xcode->Product->Archive,但是真的是太慢了。

使用Xcode生成打包測(cè)試包并上傳FTP

1.打開(kāi)項(xiàng)目設(shè)置頁(yè)面選擇Build Phases
2.點(diǎn)左上角+號(hào),選擇New Run Script Phase
3.新增以下指令

# Type a script or drag a script file from your workspace to insert its path.

# 文件夾名稱
FILENAME="IpaBuild"

# 測(cè)試包腳本名字
BUILDNAME="ipaBuild"
# 上傳FTP腳本名字
FTPNAME="ipaUpload"
# 測(cè)試包并上FTP腳本名字
BUILDWITHFTPNAME="ipaBuildAndUpload"

# 項(xiàng)目構(gòu)建目錄
PRODUCTS_PATH="${BUILT_PRODUCTS_DIR}"
# 項(xiàng)目目錄
TARGET_APP_PATH="$PRODUCTS_PATH/${TARGET_NAME}.app"
# 打包項(xiàng)目名字
#APPNAME="${TARGET_NAME}"
APPNAME="appstore"

# FTP上傳-項(xiàng)目根目錄
UPLOADFILENAMEBEFORE="${SRCROOT}"
# FTP上傳-包
UPLOADFILENAME="/$BUILDNAME/$APPNAME.ipa"
# FTP地址
HOST="xxx.xxx.x.xx"
# FTP賬號(hào)
USERNAME="xxx"
# FTP密碼
PASSWORD="xxx"
# FTP路徑
HOSTFILEPATH="/xxx/xxx/xxx/"

# 每次構(gòu)建都清理目錄
rm -rf $FILENAME
mkdir -p $FILENAME

# 測(cè)試包腳本
cd $FILENAME
touch $BUILDNAME.command
chmod +x $BUILDNAME.command
echo "#!/bin/bash" >> $BUILDNAME.command
echo 'cd `dirname $0`;' >> $BUILDNAME.command
echo "mkdir Payload;" >> $BUILDNAME.command
echo "echo =============================打包中=============================;" >> $BUILDNAME.command
echo "${BUILT_PRODUCTS}"
echo "cp -rf $TARGET_APP_PATH Payload;" >> $BUILDNAME.command
echo "zip -r -q $APPNAME.ipa Payload;" >> $BUILDNAME.command
echo "rm -rf Payload;" >> $BUILDNAME.command
echo "echo =============================打包完成=============================;" >> $BUILDNAME.command
echo "exit;" >> $BUILDNAME.command

# 上傳FTP腳本
cd $FILENAME
touch $FTPNAME.command
chmod +x $FTPNAME.command
echo "#!/usr/bin/expect -f" >> $FTPNAME.command
echo "set uploadFileNameBefore $UPLOADFILENAMEBEFORE" >> $FTPNAME.command
echo "set uploadFileName $UPLOADFILENAME" >> $FTPNAME.command
echo "set host $HOST" >> $FTPNAME.command
echo "set username $USERNAME" >> $FTPNAME.command
echo "set password $PASSWORD" >> $FTPNAME.command
echo "spawn sftp $USERNAME@$HOST" >> $FTPNAME.command
echo 'expect {
        "(yes/no)?" {send "yes\r"; exp_continue}
        "password:" {send "'$PASSWORD'\r"}
    }' >> $FTPNAME.command
echo 'expect "sftp>"' >> $FTPNAME.command
echo 'send "cd '$HOSTFILEPATH'\r"' >> $FTPNAME.command
echo 'expect "sftp>"' >> $FTPNAME.command
echo 'send "put '$UPLOADFILENAMEBEFORE''$UPLOADFILENAME'\r"' >> $FTPNAME.command
echo 'expect "sftp>"' >> $FTPNAME.command
echo 'send "bye\r"' >> $FTPNAME.command
echo "expect eof" >> $FTPNAME.command

# 測(cè)試包并上FTP腳本
cd $FILENAME
touch $BUILDWITHFTPNAME.command
chmod +x $BUILDWITHFTPNAME.command
echo "#!/bin/bash" >> $BUILDWITHFTPNAME.command
echo 'cd `dirname $0`;' >> $BUILDWITHFTPNAME.command
echo "mkdir Payload;" >> $BUILDWITHFTPNAME.command
echo "echo =============================打包中=============================;" >> $BUILDWITHFTPNAME.command
echo "${BUILT_PRODUCTS}"
echo "cp -rf $TARGET_APP_PATH Payload;" >> $BUILDWITHFTPNAME.command
echo "zip -r -q $APPNAME.ipa Payload;" >> $BUILDWITHFTPNAME.command
echo "rm -rf Payload;" >> $BUILDWITHFTPNAME.command
echo "echo =============================打包完成=============================;" >> $BUILDWITHFTPNAME.command
echo "open $UPLOADFILENAMEBEFORE/$FILENAME/$FTPNAME.command" >> $BUILDWITHFTPNAME.command
echo "exit;" >> $BUILDWITHFTPNAME.command

效果

command + r 之后項(xiàng)目目錄下會(huì)生成ipaBulid目錄(或你自定義)

image.png

生成了三個(gè)文件

  • ipaBuild 單純打測(cè)試包
  • ipaUpload 單純上傳FTP
  • ipaBuildAndUpload 打測(cè)試包并上傳


    image.png

點(diǎn)擊對(duì)應(yīng)腳本就可以執(zhí)行

注意

  • 這個(gè)是打測(cè)試包的
  • 不要選擇模擬器運(yùn)行
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容