Как создать архив XCode без чистой сборки

У нас довольно большая база кода, которая занимает много времени, чтобы очистить сборку. Всякий раз, когда мы архивируем сборку (Product-> Archive), процесс архивации сначала очищает все, а затем строит.

Это кажется ненужным и трудоемким, мы хотели бы иметь возможность создавать архив без чистой сборки. Инкрементальные сборки должны быть точными.

Кто-нибудь знает, как отключить «чистый все» шаг во время процесса архивирования XCode? Большое вам спасибо, мои поиски по этому поводу придумали только советы о том, как сделать сборку быстрее (что для нас не является полезным советом).

Да, это возможно.

Как я и предполагал, это может быть сделано из командной строки. Нам потребовалось некоторое время, чтобы понять это. Вот выдержка из наших скриптов сборки TeamCity. В основном вы создаете сборку (чистый или дополнительный – ваш выбор), затем генерируйте и .ipa из сборки. Вот один из вариантов (конечно, идентификатор идентификатора и идентификатора профиля):

export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate" xcodebuild -project <PROJECT NAME>.xcodeproj -target <PROJECT NAME> -configuration Release -sdk iphoneos -arch armv7 ONLY_ACTIVE_ARCH=NO CONTRIB_PATH=%system.agent.home.dir%/Contrib2 CODE_SIGN_IDENTITY="iPhone Developer: <DEV NAME> (ID)"  PROVISIONING_PROFILE=<PROFILE ID> rm -rf Payload mkdir Payload cp -R build/Release-iphoneos/ Payload/ rm ~/<PROJECT NAME>.ipa xcrun -sdk iphoneos PackageApplication -v Payload/<PROJECT NAME>.app -o ~/<PROJECT NAME>.ipa --sign "iPhone Developer: <DEV NAME> (ID)" --embed ~/Library/MobileDevice/Provisioning\ Profiles/<PROFILE ID>.mobileprovision 

Инкрементальные сборки не подходят для архива. Точка чиста – это потому, что иногда вы можете получить проблемы в инкрементальных сборках, которые являются чистыми исправлениями. Это приемлемая проблема во время разработки, но Archive предназначен для сборки дистрибутивов, а сборки распределения не должны иметь такой риск вообще.

Не говоря уже о том, что ваш нормальный процесс сборки создает сборку Debug, и Archive собирается построить сборку Release, поэтому вам потребуется перестроить большую часть приложения в любом случае (все, что изменилось со времени вашей последней версии сборки).

Как создать постоянный сервер интеграции, чтобы каждая фиксация могла инициировать процесс, который приводит к архивированной сборке. , , (надеюсь, после запуска тестов и т. д.), а также публикации API-документов и т. д.

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

В противном случае вы столкнетесь с головной болью, когда вам нужно делать свою разработку в режиме Release вместо отладки и т. Д. – ее просто не будет работать .

Вот пример проекта (OSX), который включает скрипт сборки, который может запускаться сервером непрерывной интеграции. Я использовал Bamboo, но если вы хотите что-то бесплатно, есть, например, Дженкинс:

https://github.com/jasperblues

В вышеприведенном проекте каждая успешная сборка (инициированная всякий раз, когда кто-то комментирует код) публикует документы API и отчеты о покрытии отчетов на странице github. , , для проекта iOS вы также можете архивировать его.

  • Xcode не отображает меню для параметров настройки сборки
  • XCode -> Строить имена настроек с символами подчеркивания
  • Модуль iOS - Xcode похож на Android
  • Настройка сборки Xcode «Путь сборки продуктов» (CONFIGURATION_BUILD_DIR) - ложь?
  • Достижение препроцессора в Xcode 9?
  • Могу ли я отлаживать непосредственно приложение iOS для iPhone-5 (armv7s), построенное только для armv6 и armv7?
  • Разница между версией и сборкой под Identity
  • Granules (ERG) для эксклюзивных резервистов на процессорах Apple
  • Белый ярлык приложения iOS
  • Как переключить разборку iOS Xcode 4.2 с Thumb на ARM?
  • Модуляция приложений iOS во время сборки
  • Interesting Posts

    Как узнать, имеет ли UITextField в iOS пробелы

    nil не совместим с ожидаемым типом аргумента ''

    Можно ли публиковать сообщения с помощью Google Соседние сообщения в фоновом режиме в iOS?

    Плохая производительность операции «Сохранить» основных данных в управляемом объекте

    банда из четырех шаблонов дизайна – код примера Objective C?

    Предупредительный кадр для «Навигационной панели» будет отличаться во время выполнения в XCode 8 Swift 3

    iOS UITableViewCell переполняет contentView

    Получить данные nsdata из базы данных sqlite и просмотреть их в webView

    Получение собственной вибрации для работы на iOS через AS3

    iOS: ошибка: доступ к неизвестному компоненту «cornerRadius» свойства

    NSPredicate для внутреннего ключа в массиве dictonary

    Есть ли способ «создать» пользовательский UIView в раскадровке и использовать в нескольких ViewControllers без добавления какого-либо конкретного контроллера?

    Popup UIViewController

    Рисование 3D-куба и его вращение

    Могу ли я теперь использовать JIT для приложения iOS, которое должно быть распространено через магазин?

    Давайте будем гением компьютера.