1. 程式人生 > >ios xcodebuild命令列自動打包 shell指令碼

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