Пакетная сборка и архивирование приложений iOS через терминал

Я пытаюсь упростить процесс сборки -> архивирования -> отправки для публикации приложения iOS. У нас есть более 50 мобильных приложений с практически одинаковой структурой, но с разными графическими элементами и настройками конфигурации.

Обычно я загружал каждый проект в xcode 4.2 и собирал -> архив -> отправлял обычным способом с помощью графического интерфейса xcode,но сейчас у нас более 50 приложений, и этот процесс очень утомителен каждый раз, когда мы выпускаем обновление.

При этом я пытаюсь ускорить этот процесс с помощью функции оболочки. Я провел множество исследований и обнаружил, что xcodebuild(См. Ответ Рейда )должен работать, однако параметр «Архив» не работает, так как я получаю следующую ошибку:

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 _, и все работает правильно, как я и ожидал, за исключением того, что я не копирую правильный «Info.plist» и не могу понять, откуда его скопировать или как его сгенерировать.. Так что теперь я застрял.

Xcode распознает архивы, но перечисляет их в разделах «Неизвестная схема» и «Безымянный архив» в органайзере.

Мы очень признательны за любую помощь в получении правильного Info.plist.

Я также приветствую рекомендации по улучшению сценария и/или более эффективному способу пакетной сборки + архивации этих приложений iOS.

Примечание:

  • Я не могу выполнить обновление выше Xcode 4.2, так как для этого требуется (, насколько я понимаю )OS X 10.7+, которую я пока не могу получить (корпоративный компьютер ).

  • Я все еще очень новичок в bash/shell, поэтому приношу извинения за любой уродливый код/практику выше.

  • Кроме того, это для официальной подачи приложения, а не для -ad hoc или чего-то подобного.

В очередной раз благодарим за помощь.

8
задан Community 23 May 2017 в 11:51
поделиться