Вы определенно на правильном пути в отношении файла .xcscheme - у меня возникла эта проблема при настройке моих собственных проектов!
Для потомков или, по крайней мере, тех, кто попадает сюда в результате поиска, есть две версии - версия «Я занят, так что просто факты, пожалуйста» и более активное обсуждение и обоснование. Обе эти версии предполагают, что вы пытаетесь выполнить сборку из файла Workspace; Если нет, то приношу свои извинения, поскольку это в основном применимо к проектам на основе рабочей области.
Краткая версия Fix-it
Основная причина заключается в том, что поведение схем по умолчанию заключается в том, чтобы сохранять схемы «частными» до тех пор, пока они не будут специально отмечены как общие. В случае сборки, инициированной командной строкой, пользовательский интерфейс Xcode никогда не запускается, а инструмент xcoderun не имеет собственного кеша схем для работы. Цель состоит в том, чтобы сгенерировать, поделиться и зафиксировать схему, которую вы хотите запустить в Bamboo:
- На чистой рабочей копии кода откройте рабочую область вашего проекта.
- Выберите «Схема»> «Управление схемами ...» в меню продукта.
- Появится список схем, определенных для проекта.
- Найдите схему, которую пытается запустить Bamboo
- Убедитесь, что для этой схемы установлен флажок «Shared» и что для параметра «Container» установлено значение Workspace, а не сам файл проекта.
- Нажмите «ОК», чтобы закрыть лист «Управление схемами».
- В вашем проекте по адресу WorkspaceName.xcworkspace / xcshareddata / xcschemes создан новый файл .xcscheme.
- Зафиксируйте этот файл в своем репозитории и запустите сборку Bamboo.
Более глубокое обсуждение и обоснование
Xcode 4 представил рабочие области и схемы как способ помочь попытаться приручить некоторый хаос, присущий работе с механизмами объединения связанных проектов Xcode, целей сборки и сборки конфигураций вместе. Само рабочее пространство имеет свой собственный набор данных конфигурации, который описывает каждый из меньших `` блоков '' данных, которые он содержит, и действует как каркас для прикрепления файлов .xcodeproj и набора общих данных конфигурации, которые зеркалируются на каждой машине разработчика или системе CI. , В этом и сила, и ловушка рабочих пространств - есть 1) множество способов, с помощью которых можно настроить все на 100% правильно, но поместить в неправильный контейнер, или 2) поместить в правильный контейнер, но настроенный неправильно, таким образом, отображая данные недоступен для других частей системы!
По умолчанию схемы Xcode 4 автоматически создают новые схемы по мере добавления проектов в файл рабочей области. Те из вас, кто добавил несколько файлов .xcodeproj, возможно, заметили, что ваш список схем быстро становится неуправляемым, особенно когда файлы проекта добавляются, затем удаляются, а затем считываются в ту же рабочую область. Все схемы, созданные автоматически или вручную, по умолчанию являются «частными» схемами, видимыми только текущему пользователю, даже если файлы .xcuserdata зафиксированы вместе с данными и конфигурацией проекта. Это основная причина той загадочной ошибки сборки, которую Bamboo сообщает из xcodebuild - поскольку Bamboo управляет сборкой через командную строку, а не через пользовательский интерфейс Xcode, у него нет возможности для автоматического создания схем и полагается только на те, которые определены в самой рабочей области.
xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyApplication -configuration Debug
xcodebuild ищет файл <'scheme' Parameter Value> .xcscheme, существующий в <'workspace' Parameter Value> / xcshareddata / xcschemes.
Очевидно, что существует множество способов настройки как Bamboo, так и рабочего пространства, поэтому имейте в виду, что ваша уникальная конфигурация может не на 100% соответствовать тому, что представлено здесь. Основные выводы:
- Некоторые автоматизированные задачи, которые волшебным образом выполняет пользовательский интерфейс Xcode, недоступны через интерфейс командной строки Xcodebuild.
- Вы можете прикрепить схему и данные конфигурации сборки ко многим местам в `` иерархии контейнеров '' - убедитесь, что ваши данные попадают в правильный контейнер (рабочая область, проект и / или цель сборки)
- Подумайте, где в иерархии контейнеров инструмент xcodebuild может искать данные конфигурации; отличный индикатор того, где он начнет поиск, основан на использовании аргументов «-рабочая область» или «-проект».
Поле "Shared" уже отмечено ... что теперь?
Я столкнулся с той же проблемой на моем собственном экземпляре Bamboo; Оказалось, что схема, зафиксированная в моем репозитории, устарела, и последняя версия инструментов командной строки не справлялась с ней корректно. Поскольку это существовало ранее, я просмотрел настройки, чтобы убедиться, что в схеме нет ничего явно нестандартного, удалил и воссоздал схему, убедившись, что я пометил ее как `` Общий доступ '', и повторно загрузил новый файл .xcscheme в репозиторий.
Если все выглядит хорошо и перестройка не решает проблему, дважды проверьте настройку этого контейнера - очень легко привязать эту схему к неправильному контейнеру в иерархии!