Для сборки 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 вручную для каждого проекта.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: