iOS: Создание инструмента командной строки для сборки и архивирования

Я знаю, что эта тема много раз обсуждалась на SO, но я не нашел всей информации.

Я создаю внешний скрипт для сборки и архивации моего проекта.
Я нашел хорошую документацию здесь и здесь, но я не могу понять, как получить переменные xcode, такие как ${PROJECT_NAME}, ${TARGET_SDK} и т. д.

Я также видел эту строку, которая может быть интересна для поиска этих варов:

."$WORKSPACE/autobuild/build.config"

но я не могу найти ни папку «autobuild», ни файл «build.config» на моем Mac.

У меня такое чувство, что я что-то упустил, но не знаю, что ...

Любая идея ?


person Martin    schedule 06.12.2012    source источник
comment
Такой инструмент уже есть. Это называется «сделать».   -  person    schedule 06.12.2012
comment
смешной. Я знаю, как компилировать, и хотел бы, чтобы вары хранились в файле конфигурации проекта.   -  person Martin    schedule 06.12.2012


Ответы (1)


Убедитесь, что вы установили инструменты командной строки XCode (через настройки XCode).

Затем я использую простой сценарий оболочки:

#!/bin/sh
source "build.cfg"

xcodebuild -target "${XCODE_BUILD_TARGET}" -sdk "${XCODE_BUILD_SDK}" -configuration Release CODE_SIGN_IDENTITY="${XCODE_BUILD_CODE_SIGN_AUTHORITY}"
EXIT_CODE=$?
if [ ! $EXIT_CODE -eq 0 ];then
  exit $EXIT_CODE
fi

xcrun -sdk "${XCODE_BUILD_SDK}" PackageApplication -v "${XCODE_ABS_BUILD_APP_PATH}" -o "${XCODE_ARCHIVE_OUTPUT_PATH}" --sign "${XCODE_BUILD_CODE_SIGN_AUTHORITY}" --embed "${XCODE_ABS_PROVISIONING_CERTIFICATE_PATH}"
EXIT_CODE=$?
if [ ! $EXIT_CODE -eq 0 ];then
  exit $EXIT_CODE
fi

У меня есть еще куча, но это ключевая часть. Затем build.cfg содержит только указанные выше переменные:

#!/bin/sh
export XCODE_PROJECT_DIR="Builds/iOS"
export XCODE_BUILD_TARGET="Demo-iPhone"
export XCODE_BUILD_SDK="iphoneos"
export XCODE_BUILD_PLIST="Info.plist"
export XCODE_BUILD_APP_NAME="demo.app"
export XCODE_BUILD_APP_DIR="build"
export XCODE_BUILD_CODE_SIGN_AUTHORITY="iPhone Distribution: ABC"
export XCODE_ARCHIVE_OUTPUT_IPA_FILENAME="demo.ipa"
export XCODE_ARCHIVE_OUTPUT_IPA_DIR="build/release"
export XCODE_ARCHIVE_PROVISIONING_CERTIFICATE="demo_adhoc.mobileprovision"
...
person peterept    schedule 06.12.2012
comment
Но суть в том, как я могу получить XCODE_ABS_BUILD_APP_PATH автоматически? - person Martin; 06.12.2012
comment
Я не думаю, что для этого есть инструмент. И даже если бы они были, у многих проектов есть несколько целей, SDK, сертификатов и т. Д. Так что вам все равно нужно будет где-нибудь указать свой выбор. Мы анализируем файлы проекта XCode для редактирования настроек из оболочки, но, как и выше, я использую файл конфигурации, сделанный вручную для каждого проекта. - person peterept; 07.12.2012