ios xcodebuild命令列自動打包 shell指令碼
####################################
使用規則:
1.cd到工程目錄,再執行該sh指令碼檔案
2.該工程如果存在xcworkspace檔案,那麼WORKSPACE_NAME必須要指定名稱,PROJECT_NAME也指定同樣名稱(生成的ipa檔案與PROJECT_NAME同名);如果不存在,那麼可以註釋掉;
3.工程目錄中必須存在 archiveOptionPlist檔案,
plist檔案一般為: teamId:xxx; export_method:ad-hoc;compileBitcode:false;
另外: log資料夾會儲存 log日誌,xcarchive檔案,ipa檔案
(上傳appstore的指令碼暫時沒有寫,需求不是很大)
######################################
WORKSPACE_NAME=SFDistributorOrders
#PROJECT_NAME一定要填寫,如果存在workspace,那麼project與workspace保持同名
PROJECT_NAME=SFDistributorOrders #專案名字,Scheme名字,workspace名字
EXPORT_OPTION_PLIST_NAME=toIpa.plist #exportOptionPlist檔名字
######################################
#特別注意 (=)不能有空格,否則command not found錯誤
DATE=`date +%Y%m%d-%H%M`#當前時間,用於重新命名打出的release包的包名
CONFIGURATION=Release #是打release包還是debug包
PROJECT_PATH=$(pwd) #專案路徑
EXPORT_LOG_PATH=${PROJECT_PATH}/log #log,xcarchive,ipa等檔案的生成目錄
echo -e "\033[32m ———————配置如下—————- \033[0m "
echo -e "\033[32m 工作空間名稱 ==> ${WORKSPACE_NAME} \033[0m "
echo -e "\033[32m 專案名稱 ==> ${PROJECT_NAME} \033[0m "
echo -e "\033[32m 專案配置 ==> ${CONFIGURATION} \033[0m "
echo -e "\033[32m 專案路徑 ==> ${PROJECT_PATH} \033[0m "
echo -e "\033[32m Archivie路徑 ==> ${PROJECT_PATH}/${DATE}.archive \033[0m "
echo -e "\033[32m ipa包路徑 ==> ${PROJECT_PATH}/${DATE} \033[0m "
echo -e "\033[32m exportOptionPlist檔案需要放置的位置 ==> ${PROJECT_PATH}/${EXPORT_OPTION_PLIST_NAME} \033[0m "
echo
echo -e "\033[32m ##################開始執行指令碼######################## \033[0m "
#echo ${DATE}
#echo ${EXPORT_LOG_PATH}
#先清楚以前的打包檔案
xcodebuild clean -project ${PROJECT_PATH}/${PROJECT_NAME}.xcodeproj
echo -e "\033[32m ##################舊打包檔案清理成功######################## \033[0m "
echo -e "\033[32m ################正在打包中################# \033[0m "
echo -e "\033[34m archive日誌路徑:$EXPORT_LOG_PATH/${DATE}_archive.log \033[0m "
echo ...
#如果log目錄不存在,那麼就生成一個log目錄
if [ ! -x $EXPORT_LOG_PATH ]; then
mkdir $EXPORT_LOG_PATH
fi
if [ -n "$WORKSPACE_NAME" ];then
xcodebuild archive \
-workspace ${WORKSPACE_NAME}.xcworkspace\
-scheme ${WORKSPACE_NAME} \
-archivePath ${PROJECT_PATH}/log/${DATE} | tee $EXPORT_LOG_PATH/${DATE}_archive.text
else
xcodebuild archive -configuration Release \
-scheme ${WORKSPACE_NAME} \
-archivePath ${PROJECT_PATH}/log/${DATE} >> $EXPORT_LOG_PATH/${DATE}_archive.text
fi
echo -e "\033[32m ################生成ipa包中 ################# \033[0m "
echo -e "\033[34m ipa日誌路徑:$EXPORT_LOG_PATH/${DATE}_ipa.log \033[0m "
echo ...
if [ -e ${PROJECT_PATH}/log/${DATE}.xcarchive ];then
echo -e "\033[34m ${DATE}.xcarchive生成成功! \033[0m "
else
echo -e "\033[31m ${DATE}.xcarchive生成失敗! \033[0m "
echo "程式已退出!"
exit
fi
#開始打包
xcodebuild -exportArchive \
-archivePath ${PROJECT_PATH}/log/${DATE}.xcarchive \
-exportOptionsPlist ${PROJECT_PATH}/${EXPORT_OPTION_PLIST_NAME} \
-exportPath ${PROJECT_PATH}/log/$DATE => $EXPORT_LOG_PATH/${DATE}_ipa.text
if [ -e ${PROJECT_PATH}/log/${DATE}/${PROJECT_NAME}.ipa ];then
echo -e -e "\033[34m ${DATE}.ipa生成成功! \033[0m "
echo -e "\033[32m ################開始上傳測試包分發平臺################# \033[0m "
echo ...
curl -F "[email protected]${PROJECT_PATH}/log/$DATE/${PROJECT_NAME}.ipa" -F "uKey=6b3f7a594d2e5467828b707bb1a74206" -F "_api_key=d3bf77d75392f48cdafcf034f42800f4" https://www.pgyer.com/apiv1/app/upload
else
echo -e -e "\033[31m ${DATE}.ipa生成失敗! \033[0m "
echo "程式已經推出";
exit;
fi
#上傳到孟澤的 蒲公英賬號,會自動通知測試人員,且可以根據二維碼可以手機無線安裝ipa包"
echo
echo -e "\033[32m ###################執行指令碼結束######################## \033[0m"
#能檢視專案工程的配置提示
#xcodebuild -version xcode的版本
#xcodebuild -showsdks 當有多個xcode時,存在多個iphoneos sdk,可以強制指定
#xcodebuild -list 提示targets, configurations,schemes
#關於configuration引數: 如果不指定,那麼會使用schemes引數中的配置,如果都不生效,那麼使用release;
#AppStoreExportOptions.plist:method=app-store,uploadBitcode=YES,uploadSymbols=YES
#AdHocExportOptions.plist:method=ad-hoc,compileBitcode=NO
相關推薦
ios xcodebuild命令列自動打包 shell指令碼
#################################### 使用規則: 1.cd到工程目錄,再執行該sh指令碼檔案 2.該工程如果存在xcworkspace檔案,那麼WORKSPACE_NAME必須要指定名稱,PROJECT_NAME也
iOS命令列自動打包(archive)
前言 iOS開發工程師在測試修復bug的過程中,一般會存在頻繁打包的情況,如果一步步在xcode中點選archive,下一步,下一步。。。這樣太浪費我們的時間了。下面我們來介紹在命令列使用xcodebuild命令進行自動archive打包並且匯出ipa檔案。 準備工作
CMD Telnet 命令列自動傳送郵件指令碼
定期監控sql server服務執行狀態,如服務停止,則啟動它?這個比較簡單的方法可以實現 net start 服務名稱 放到windows的定時執行中就好了 如果服務已經啟動則報 服務已經啟動 以下是監控服務,併發送郵件 首先簡單介紹一下SMTP SMTP基本命令
iOS 測試 xcodebuild 命令列打包遇到的坑與解決方案 2017
第一個問題 ** INTERNAL ERROR: Uncaught exception ** Uncaught Exception: -[__NSCFString objectForKeyedSubscript:]: unrecognized selector sent to instance
InnoSetup 以命令列自動編譯打包
本章介紹,在新建Innosetup的編譯指令碼iss檔案後,在不執行Innosetup軟體的基礎上,以bat自動編譯執行打包。 一、Bat檔案 新建一個bat檔案,在檔案中新增如下命令列。 1 cd \ 2 c: 3 cd C:\Program Files (x86)\Inno Setup 5
關於crontab自動執行shell指令碼出現的不能執行命令問題
上一篇部落格寫了一個shell指令碼,用來測試計算機硬體資訊、cpu、記憶體等資訊。今天把它扔進crontab裡面想定期執行,並儲存資料。結果出現了問題。。。先看shell指令碼:#!/bin/bash #定義變數NOW,值為當前日期。格式:yyyymmdd NOW=`d
Linux下Oracle資料庫自動備份Shell指令碼
1.在伺服器建立備份目錄,並賦予許可權 mkdir -p /backup/P_DATA #新建shell指令碼存放路徑 mkdir -p /backup/P_DB_BACK #新建Oracle資料庫備份目錄 chown -R oracle:oinstall /backup/P
iOS 使用 fastlane + fir 自動打包上傳到 fir
.code { background-color: black; color: white; padding: 20px } .codeTxt { background-color: lightgray; color: black; padding: 20px } 什麼是 fastlane?
gradle編譯命令 & 自動打包等
./gradlew -v 版本號,首次執行,沒有gradle的要下載的哦。 ./gradlew clean 刪除HelloWord/app目錄下的build資料夾 ./gradlew build 檢查依賴並編譯打包 ./gradlew assembleDebug 編譯並打Debug
命令列(自動)登入校園網
第一章 用 curl sudo apt-get install curl 老閘道器登入(走校園網流量): 看網頁原始碼的這裡: emmm……取的啥破名兒…… 顯然DDDDD那裡寫學號,upass寫密碼,登入按鈕是0MKKey。 那麼: curl 'http
sh命令 /Linux中執行shell指令碼的4種方法總結
bash shell 指令碼的方法有多種,現在作個小結。假設我們編寫好的shell指令碼的檔名為hello.sh,檔案位置在/data/shell目錄中並已有執行許可權。 方法一:切換到shell指令碼所在的目錄(此時,稱為工作目錄)執行shell指令碼:此種方法為阿里雲推
cmd 命令列方式執行 matlab 指令碼
0. matlab 命令列刪除當前輸入的行ctrl + u1或者 esc1. 命令列執行指令碼首先設定環境變數,將 matlab.exe 新增到環境變數 Path 中,比如我的 matlab 2014a 安裝在 D 盤,則其路徑資訊為:D:\Program Files
linux的命令列操作和shell的區別
這個問題也是突然想起來的,因為我身邊的同事有時候會把這兩個區別的表述,所以我就好奇了,到底是什麼關係呢,他們都能操作Linux系統啊。。後來百度一下才知道大致的區別。 一、什麼是shell 答: shell翻譯成殼的意思,它是包
centos7 mysql自動備份 MySQL自動備份shell指令碼
MySQL自動備份shell指令碼 在資料庫的日常維護工作中,除了保證業務的正常執行以外,就是要對資料庫進行備份,以免造成資料庫的丟失,從而給企業帶來重大經濟損失。通常備份可以按照備份時資料庫狀態分為熱備和冷備,按照備份資料庫檔案的大小分為增量備份、差異備份和全量備份.一
命令列批量合併視訊指令碼
批量合併視訊頭部 需要ffmpeg, 目前直接安裝格式工廠, 使用格式工廠模組下的ffmpge.exe, 避免自己去下載原始碼和編譯 ffmpeg合併視訊的幾種方法 ffmpeg的合併方式有三種, 參考 : 這兒 , 我選擇配置檔案合併的方式, 因為其他兩種我這邊測試無法合併視訊:
命令列mvn打包
一、 我習慣用命令列打包,以下是打jar和war jar :mvn clean install -Dmaven.test.skip=true 說明:clean是清除之前的jar包,install是打包到本地(如果用deploy,是打包到遠端倉庫,具體我也不是特別清楚,可能會
實用指令碼----Linux下Jdk和Tomcat自動安裝shell指令碼總結
一、JDK 自動安裝指令碼 jdk自動安裝bash shell指令碼,截止今天(2014/10/15)親測可用: sudo su #切換到root許可權 mkdir /usr/local/java cd /usr/local/java #download jdk 1.7.67 wget --no-ch
K8S測試自動安裝shell指令碼
#!/bin/bash function f_tls(){ #直接使用二進位制原始碼包安裝 ls -l /usr/local/bin/cfssl* > /dev/null 2>&1 if [ $? != 0 ];then wget http://172.23.210.
自動獲取shell指令碼的絕對路徑,執行路徑
檔名 test.sh #!/bin/sh echo "指令碼所在的資料夾名:" dirname $0 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" echo "指令碼的執行路徑
maven mvn 命令列 編譯打包
* 一行命令 # 切換到專案根目錄 mvn clean && mvn compile && mvn package && start target * 配置好jdk * 下載安裝maven http://ma