Для сборки XCode проекта существует консольная утилита xcodebuild, для подписи можно использовать /usr/bin/xcrun.

Если зайти через Terminal в папку проекта и просто набрать xcodebuild — проект будет собран с параметрами по-умолчанию.

Итак, нам нужно собрать проект, используя xcodebuild, в нужной конфигурации. На выходе мы получим *.app файл, который нужно «скормить» xcrun для получения *.ipa.

Я предлагаю написать скрипт, который можно положить в папку проекта и вызывать его для сборки, обзовем его, например, build.sh.

Вот он целиком:

TARGET_SDK="iphoneos"
TARGET_NAME="consolebuildtest"
PROJECT_BUILDDIR="/Users/limejelly/Developer/Builds/"
PROJECT_NAME="consolebuildtest"
BUILD_HISTORY_DIR="/Users/limejelly/Desktop/"
DEVELOPPER_NAME="iPhone Distribution: XXX XXX XXX XXX"
PROVISONNING_PROFILE="/Users/limejelly/Library/MobileDevice/Provisioning Profiles/F65BBDF3-1704-48E9-9275-290A37CF1FD4.mobileprovision"
APPLICATION_NAME="consolebuildtest"
BUILD_CONFIGURATION="Release"

xcodebuild -target "${TARGET_NAME}" -sdk "${TARGET_SDK}" -configuration "${BUILD_CONFIGURATION}" SYMROOT="${PROJECT_BUILDDIR}/${PROJECT_NAME}"

/usr/bin/xcrun -sdk "${TARGET_SDK}" PackageApplication -v "${PROJECT_BUILDDIR}/${PROJECT_NAME}/${BUILD_CONFIGURATION}-${TARGET_SDK}/${APPLICATION_NAME}.app" -o "${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa" --sign "${DEVELOPPER_NAME}" --embed "${PROVISONNING_PROFILE}"

Название некоторых параметров говорит само за себя. Рассмотрим некоторые из них:

1. PROJECT_BUILDDIR — место, куда будут ложиться промежуточные файлы и результат в виде *.app.

2. BUILD_HISTORY_DIR — куда ложить готовый ipa.

3. DEVELOPPER_NAME — название сертификата. Так, как он называется в KeyChain.

4. PROVISONNING_PROFILE — Путь до профайла, которым подписывается ipa. Посмотреть его можно в XCode Organizer, выюрав нужный профайл и нажав «Reveal Profile in Finder».

Такие параметры как TARGET_NAME и BUILD_CONFIGURATION (а также Scheme, который тут не используется) можно узнать, набрав в консоли (находясь в папке с проектом) команду xcodebuild -list.

MacBook-Pro-Lime-Jelly:consolebuildtest limejelly$ xcodebuild -list
Information about project «consolebuildtest»:
Targets:
consolebuildtest

Build Configurations:
Debug
Release

If no build configuration is specified and -scheme is not passed then «Release» is used.

Schemes:
consolebuildtest

Список доступных SDK можно получить командой xcodebuild -version -sdk.

В вышеприведенном скрипте поправьте пути на свои, положите скрипт в папку с проектом и попробуйте запустить. В итоге у вас должен получиться подписанный *.ipa файл.

Где это можно использовать? Можно использовать, например, для доставки билдов через Testflightapp. У них есть Upload API, который принимает IPA.

Конечно же, до автоматизма далеко, ведь нужно прописывать TARGET_NAME,APPLICATION_NAME и PROJECT_NAME вручную для каждого проекта.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *