Существует несколько причин, по которым вы видите эту ошибку, но это сводится к зависимостям. Если вы выберете схему, которая создает цель iOS, то у вас нет проблемы, используя следующую команду. Обратите внимание, что я использовал iphoneos
для автоматического выбора последнего SDK.
xcodebuild -configuration Release -target "ios" -sdk iphoneos -scheme "ios" build
Проблема, с которой вы столкнулись, вызвана из-за зависимости от расширения watchOS. Я создал образец проекта и добавил приложение watchOS. На вкладке фазы сборки вы видите в разделе Зависимости, что цель iOS имеет зависимость от цели WatchOS.
Это не проблема, если вы укажете в вашей команде построить destination
. Но это создает проблему, если вы скажете xcodebuild
для создания с определенным SDK. Зачем? Поскольку цель WatchOS не может быть построена с помощью SDK iOS. Если вы укажете iphoneos
в качестве SDK, сборка завершится неудачно.
Задание адресата решает проблему, но знайте, что вы используете конкретный симулятор. Если вы используете ту же команду на другом компьютере и этот симулятор недоступен, сборка завершится неудачно.
Если честно, я не знаю, есть ли средняя дорога, которая позволяет вам выбрать последний SDK и по-прежнему использовать правильный SDK для каждой цели независимо от зависимостей. Если вы удалите зависимость цели iOS, то приведенная выше команда сборки не должна прерываться. Вам также может потребоваться обновить используемую вами схему.
Удаление аргумента -sdk делает трюк для меня. Отличный намек. +1 – DEAD10CC
в этом случае у меня все еще возникает проблема, если я хочу запускать тесты, в частности получаю: Не удалось запустить тестовый комплект: тестирование с помощью SDK «iphoneos» еще не поддерживается. Вместо этого протестируйте с помощью SDK симулятора, установив «-sdk iphonesimulator». –
@dev_mush, вам нужно предоставить '-destination' для запуска тестов. – Nekto