簡體   English   中英

通過終端批量構建和存檔iOS應用程序

[英]Batch Build and Archive of iOS apps via Terminal

我正在嘗試簡化iOS應用程序發布的構建 - >存檔 - >提交過程。 我們有超過50個移動應用程序具有幾乎相同的框架,但具有不同的圖稿和配置設置。

我通常會在xcode 4.2和build-> archive->中加載每個項目,並使用xcode GUI提交常規方法,但我們現在已經有超過50個應用程序,並且這個過程在我們推出更新時非常煩人。

話雖這么說,我試圖使用shell函數加速這個過程。 我做了大量的研究,發現xcodebuild (請參閱Reid的答案)應該可以工作,但是Archive選項不起作用,因為我收到以下錯誤:

unsupported build action 'archive'

所以我寫了以下內容:

# $1 should be a date like: 2012-07-17
# $2 should be a time like: 10.31AM
# $mybase will be the current directory at the time the function was called
# so make sure to cd into the folder containing the xcode project folders first

function xcodeArchive {
    mkdir ~/Library/Developer/Xcode/Archives/$1
    mybase=$PWD
    for x in `ls`
    do
        mkdir ~/Library/Developer/Xcode/Archives/$1/$x
        mkdir ~/Library/Developer/Xcode/Archives/$1/$x/dSYMs
        mkdir ~/Library/Developer/Xcode/Archives/$1/$x/Products
        mkdir ~/Library/Developer/Xcode/Archives/$1/$x/Products/Applications
        cd $mybase/$x
        xcodebuild
        #read -p "Press [Enter] to continue"
        cd $mybase/$x
        cp $x/$x-Info.plist ~/Library/Developer/Xcode/Archives/$1/$x/Info.plist
        cp -r build/Release-iphoneos/$x.app.dSYM ~/Library/Developer/Xcode/Archives/$1/$x/dSYMs/$x.app.dSYM
        cp -r build/Release-iphoneos/$x.app ~/Library/Developer/Xcode/Archives/$1/$x/Products/Applications/$x.app
        cd ~/Library/Developer/Xcode/Archives/$1/
        mv $x $x\ $1\ $2.xcarchive
        cd $mybase
    done
}
export -f xcodeArchive

我把它放在我的.bash_profile中,一切都按照我的預期正確運行,除了我沒有復制正確的“Info.plist”,我無法弄清楚從哪里復制它或如何生成它。 所以現在我被卡住了。

Xcode將識別存檔,但它會在組織者的“Unknown Schema”和“Unnamed Archive”下列出它們。

任何關於現在獲得正確的Info.plist的幫助非常感謝。

我也歡迎有關如何改進腳本和/或更有效地批量構建和存檔這些iOS應用程序的建議。

注意:

  • 我無法升級超出Xcode 4.2,因為這需要(據我所知)OS X 10.7+,我無法獲得(公司計算機)。

  • 我仍然是一個bash / shell新手,所以我為上面任何丑陋的代碼/做法道歉。

  • 此外,這是官方應用程序提交,而不是ad-hoc或類似的東西。

再次感謝你的幫助。

我在archive命令中遇到了同樣的問題,並通過Google發現了這個問題。 使用此構建命令會失敗:

xcodebuild -verbose -project $ProductName.xcodeproj -target $ProductName -configuration Release -sdk $SDK clean archive CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build" PROVISIONING_PROFILE="${DIST_PROVISONING_PROFILE}"

然而,它會成功使用此構建命令:

xcodebuild -verbose -project $ProductName.xcodeproj -scheme $ProductName -configuration Release -sdk $SDK clean archive CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build" PROVISIONING_PROFILE="${DIST_PROVISONING_PROFILE}"

唯一的區別是指定方案代替要構建的目標。 如果這種行為有合理的理由,我會很高興聽到這種行為。

我在Mac OS X 10.7.5上運行XCode 4.5.1

好的,我找到了一個可行的解決方案。 在做了更多的搜索和大量的猜測和檢查后,我發現我仍然可以使用xcodebuild的“archive”選項,我只需要指定一個工作區和方案,顯然我之前沒有正確地做到這一點作品。

因此,對於尋找類似解決方案的任何人(批量存檔xcode項目),這是我的功能:

# $mybase will be the current directory at the time the function was called
# so make sure to cd into the folder containing the xcode project folders first

function xcodeArchive {
    mybase=$PWD
    for x in `ls`
    do
        cd $mybase/$x
        xcodebuild -workspace $x.xcodeproj/project.xcworkspace -scheme $x archive
        cd $mybase
    done
}
export -f xcodeArchive

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM