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