После обновления до последней версии Xcode на данный момент (версия 10.0) проект не может быть собран, потому что он обнаружил некоторые ошибки, связанные с ошибкой «Команда CompileSwift завершилась неудачно с ненулевым кодом выхода».
Как мне решить эту ошибку? Они появляются в большинстве модулей (я использую CocoaPods), которые я использую в своем проекте.
Я попытался обновить версию модуля и модули до последней доступной версии, но проблема все еще существует.
Я много искал в Интернете, и информации по этому поводу очень мало.
Не сработало @inokey
Проверьте цель развертывания в настройках проекта.
Целевое значение развертывания iOS установлено на 9.0, это проблема? Еще раз спасибо @inokey
Хорошо, теперь я не уверен на 100%, но вам лучше проверить свои репозитории подов. У них может быть версия, подходящая для iOS 9.0, и с обновлением вашего модуля вы можете случайно перезаписать его новейшей версией, которая выпускается прямо сейчас, когда новая iOS является общедоступной.
@inokey Я произвел быстрый поиск в проекте и обнаружил, что #import <CommonCrypto / CommonCrypto.h> вызывается внутри CocoaPod, который я использую в проекте. Может в этом проблема?
Это вполне могло быть проблемой. Раньше при обновлении системы у меня были проблемы с обычным шифрованием Swift. Единственным решением этой проблемы было удаление папки pod'ов и выполнение чистой установки pod'ов.
Спасибо @inokey, я написал свои шаги, и я надеюсь, что это может помочь другим людям, но это очень странно, потому что внезапно это начало работать ...!
Хорошо, я рад, что ты это понял. Также приятно знать, что обычная криптография теперь является нативной структурой.
Другое возможное решение (которое сработало для меня) находится здесь: stackoverflow.com/a/52481653/96153
Чистая сборка, удаление производных данных - обычное решение для этого.
После обновления Xcode, такого как Xcode 10.3, следует перезапустить Mac
Я знаю, что вы уже пытались перезапустить и перестроить все, единственное рабочее решение - переустановить Xcode !!!!





Моя проблема заключалась в том, что у меня не было собственного Swift CommonCrypto, использовался заголовок моста и цель, которая с немного магии включала его в сборку. Поскольку CommonCrypto теперь является родным, я решил проблему, удалив цель и #import, и вместо этого добавил import CommonCrypto там, где я его использовал.
Да! У меня тоже было это (никаких коконоподов или чего-то в этом роде, только CommonCrypto) Спасибо, что спасли мой день
@OmidAriyan Привет, ребята, эта проблема помешала мне работать последние две недели: s, я перепробовал почти все решения, найденные на этом веб-сайте, но он просто не работает. Что касается вашего ответа, я на самом деле не понял сути. Не могли бы вы подробнее пояснить свой ответ? В чем проблема и что мне делать по шагам, пожалуйста :( :(
@mojtabaalmoussawi Я в основном следовал stackoverflow.com/a/42852743/1038245, чтобы использовать CommonCrypto в моем проекте до того, как был выпущен Xcode 10. Я просто попытался отменить это, чтобы исправить ошибку, о которой идет речь в этом вопросе.
В настоящее время моя сборка работает. Вот шаги, которые я пробовал, пока они, наконец, не сработали:
И если у вас нет этого модуля, возможно, вы можете попробовать, проделав те же шаги с каким-нибудь старым модулем, с которым вы можете столкнуться в своем проекте.
Добавлена информация: также. Если у вас есть ошибка кода внутри модуля, сначала вам нужно решить эту проблему с кодом, а затем снова попытаться скомпилировать проект.
Я собираюсь скопировать изменения, внесенные в мой project.pbxproj. Я знаю, что это не очень полезно, но это единственное, что изменилось в коммите git difference:
Removed: BDC9821B1E9BD1B600ADE0EF /* (null) in Sources */ = {isa = PBXBuildFile; };
Added: BDC9821B1E9BD1B600ADE0EF /* BuildFile in Sources */ = {isa = PBXBuildFile; };
Надеюсь, это поможет,
С Уважением.
Блестящий подход
У меня не получилось, особенно когда я пытаюсь встроить созданный ранее фреймворк.
Вы нашли какую-нибудь другую ошибку? Или только CompileSwift?
Если бы эта проблема была со стручком Kingfisher, ваш подход помог, спасибо!
Отличный ответ, сработал и для меня.
Работал у меня. Та.
Устранение других проблем с кодом, а затем выполнение этих шагов решило проблему для меня.
Почему это должно работать?
Я бы, наверное, попробовал сначала просто очистить папку сборки ... если это поможет, вы справитесь без особых проблем. (По крайней мере, это то, что случилось со мной)
Столкнулся с проблемой в Xcode 11.3. Сделано все, что связано с очисткой производных данных, удалением модуля и всем, что доступно в Интернете, но не повезло, и приложение не отлаживалось на реальном устройстве. Затем подумал, что это может быть проблема сбоя Xcode, просто удалил Xcode в корзину и очистил корзину, а затем переустановил новую копию Xcode 11.3. Благодаря моему предположению, у меня это сработало.
Я обыскал всю сеть, но не нашел решения этой проблемы. Удалось УДАЛИТЬ путь "Common Crypto" в разделе: IMPORT Paths в настройках сборки. Проблема, похоже, в том, что «обычная криптовалюта» теперь существует в основе в SDK для iOS 12.
Так":
Просто удалите путь к файлу «common crypto» в настройках сборки, и проект будет построен как шарм! :)
Не могли бы вы уточнить, где это находится в настройках вашей сборки? Это путь поиска?
да. Перейдите в настройки сборки, выберите вкладку «Все» вместо «Основные» или «Индивидуальные». Теперь ищите: «Swift Compiler - Search Paths» Здесь, если существует путь для общего шифрования, удалите его.
Просто добавляю к этому вопросу. Моя проблема не связана с CommonCrypto. Он создал новое приложение для одного приложения и протестировал его для запуска. Компилятор жаловался на использование Swift 4.2
Изменение языка Swift до версии 4.0 в настройках сборки устранило проблему. Не уверен, что это ошибка.
У меня была эта проблема, и изменение параметра режима компиляции для проекта с инкрементального на весь модуль исправило ее для меня.
Это помогло мне решить проблему. Когда я включил режим полного модуля, он начал сообщать мне о фактических ошибках, а не об общем отказе высокого уровня. После того, как все будет исправлено, вы можете снова изменить его на инкрементный, если хотите.
Есть подсказки, где найти эту настройку? Я просмотрел настройки сборки для своих целей и настройки сборки для проекта и не могу найти его (путем поиска), возможно, потому, что я нахожусь в проекте objective-c, который довольно старый?
Это под Swift Compiler -> Code Generation. В качестве альтернативы он иногда может быть указан в разделе Пользовательский -> SWIFT_COMPILATION_MODE
Для меня это не решило проблему, ничего не сделало.
Спасибо за совет, и он устранил мою проблему. В моем случае проект миграции на Xcode 10.2 и Swift 5. Подробное объяснение я написал в своем блоге: davidchuprogramming.blogspot.com/2019/03/…
Для меня это решает проблему, которая, похоже, вызвана регулярной ошибкой компилятора в выражении, которое требует много времени для вычисления, а также установленным флагом компилятора -Xfrontend -warn-long-expression-type-checking=100.
Нет настройки сборки Compilation Mode.
Я сделал следующее, и это работает как шарм:
LocationsDerived Data.Откроется окно искателя, в котором будут показаны следующие папки:
DerivedDataArchivesiOS DeviceSupportUserDataDocumentationCacheiOS Device LogsВыйти из Xcode
DerivedData (она просто содержит кеш от предыдущих сборок)Для меня это не решило проблему, ничего не сделало.
У меня была проблема с интервалом между именами. У меня было два файла с одинаковым именем. Просто переименовал их, и это разрешилось.
Всегда нужно ставить галочку в поле «Я дурак», прежде чем искать где-нибудь еще. :)
Позвольте мне поделиться своим опытом по исправлению этой проблемы.
Откройте цель -> Этапы сборки -> Копировать ресурсы пакета и удалите info.plist.
Примечание. Если вы используете какие-либо расширения, удалите info.plist этого расширения из Targets.
Надеюсь, это поможет.
Для меня это не решило проблему, ничего не сделало.
Это известная проблема в Swift 4.2 и Xcode 10. Я нашел здесь статью, в которой она исправлена для меня: https://github.com/Yummypets/YPImagePicker/issues/236
Короче говоря, перейдите в настройки сборки вашего проекта и добавьте определяемый пользователем параметр с именем SWIFT_ENABLE_BATCH_MODE и установите его значение на NO.
Раньше я пробовал каждый из следующих методов, предложенных в другом месте (перестроить, выйти из Xcode, очистить и перестроить, очистить файлы производных данных). Ни один из них не работал.
Как только я добавил в статью параметр сборки, определяемый пользователем, Swift сообщил мне истинную ошибку. В моем случае это отсутствовало}, но это могло быть любое количество проблем.
Для меня это не решило проблему, ничего не сделало.
Однако вместо этого я получаю это сообщение об ошибке: Команда PrecompileSwiftBridgingHeader завершилась неудачно с ненулевым кодом выхода.
я не работал, снова получил ту же ошибку.
Это сработало для меня; выявил основную ошибку.
Вот решение: - Зайдите в настройки сборки - Искать в SWIFT_COMPILATION_MODE - Если это «Целый модуль» для конфигурации выпуска, измените его на «Инкрементальный». - Архив сейчас.
Когда вы меняете настройку на «Инкрементальный», процесс завершается успешно.
Получил это случайно с Xcode 10. Думаю, это происходит, когда я что-то меняю в коде, когда начинается сборка. Следующая сборка работает каждый раз.
Для меня просто проект очистки работает с использованием ShiftCommandK и OptionShiftCommandK.
Это работает и для меня.
Для меня это не решило проблему, ничего не сделало.
@VanDuTran закройте свой xcode и снова откройте его
Это будет работать только в определенных случаях. Не жизнеспособное решение.
Да, это тоже сработало для меня Xcode 10.2.1, iOS 2.3.1, iPhone XS Max. Слава богу, он не собирался искать иголку в стоге сена. Я не сильно изменился между последней компиляцией и тем, где я получил эту ошибку.
Этот ответ эквивалентен ИТ, когда людям предлагается попробовать выключить и снова включить. Что, конечно, решило для меня.
хахаха, чувак, спасибо, у меня это работает :) Ты классный,
Я не только проголосовал за то, что это правильный ответ, но и добавил кнопки быстрого доступа для людей. Shift + Command + K - это мой переход к вопросу «Почему это не компилируется?» решение.
Спасибо!!!!!!!
Вау, это уже третий раз ...
может тебе тоже стоит почистить ~/Library/Developer/Xcode/DerivedData
Я также столкнулся с той же проблемой, и я сделал то, что предложил @cdeerinck, и получил следующий ссылка, который предлагал добавить определяемую пользователем переменную в Настройки сборки, чтобы отключить пакетный режим, т.е. добавить новую определяемую пользователем переменную с именем SWIFT_ENABLE_BATCH_MODE и установить ее на НЕТ, I смог получить больше информации об этой проблеме, и я узнал, что ошибка была в структуре, использующей CommonCrypto, который был добавлен к нему (мной), но поскольку Xcode 10 изначально доступен как часть Swift (только для платформ Apple), и добавление его (или его существования из предыдущей версии) приводило к конфликту имен и, следовательно, вызывало ошибку. Чтобы узнать больше, обратитесь к эта ссылка, в котором проблема объясняется более подробно.
У меня такая же проблема, и я решил немного изменить настройки сборки.
SWIFT_COMPILATION_MODE = singlefile;
SWIFT_OPTIMIZATION_LEVEL = "-O";
В моем случае в Входные файлы раздела Карфагенские рамки в Фазы сборки была дублирующаяся запись для фреймворка.
Скорее всего, вы не читаете все сообщение об ошибке. Если вы посмотрите выше сообщение «Команда CompileSwift завершилась неудачно с ненулевым кодом выхода», вы должны найти такую спецификацию:
В этом примере у меня было два файла с одинаковым именем. Как только я починил, все заработало как надо.
Это то, что исправило это для меня, спасибо, что указали на это.
Привет, @Samy. Что именно ты сделал?
В моем примере 2 файла имели одинаковое имя, поэтому я изменил один из них.
Повторное объявление класса будет проблемой. проверьте повторяющийся класс и сборку.
Запуск pod install --repo-update, закрытие и повторное открытие x-кода устранили эту проблему на всех моих модулях, в которых была эта ошибка.
ОШИБКА = сбой команды CompileSwiftSources с ненулевым кодом выхода
В моем случае. Когда я обнаружил эту ошибку, мне стало тесно с компиляцией. Но когда я вижу ответы на некоторые связанные проблемы. Я нашел дубликат файла в своем проекте. Где тот же viewController был там как файл класса. Так что да, когда я это понял, я сменил название на новое. И да, все изменилось !!!
Я пытался
pod install --repo-updateи все это по-прежнему не устранило проблему.
Я обновил свой xcode до 10.3 и столкнулся с аналогичными проблемами. Я попробовал все уловки, ничего не помогло, но, как указано здесь жирным шрифтом, «Перезагрузка Mac сделала свое дело», у меня это сработало.
Ненавижу это говорить, но перезапуск моего Mac решил проблему для меня. Кстати, я получил эту ошибку после обновления Xcode до 10.3.
@luin да, перезапуск Mac может быть довольно неприятным, но это сработало, лол. Я подумал, что поделюсь своим решением, надеясь, что оно избавит других от неприятностей.
Прежде чем что-либо делать, «перезагрузите Mac». Это должен быть главный ответ.
Перезагрузка Mac сработала для меня
Папка чистой сборки у меня отлично работала (только чистая, без перезагрузки Mac).
Дело с перезагрузкой Mac может показаться забавным, но это верный момент! В моем случае я модифицировал .bash_profile, затем быстро загрузил его в терминал: source .bash_profile и приступил к работе. Итак, через несколько дней, когда я вернулся, у меня снова возникли проблемы, потому что .bash_profile не был загружен ... Тогда перезапуск действительно помогает :)
@DaniChi Это тоже сработало для меня. Я попытался перезапустить XCode и готовился перезапустить Mac, когда увидел ваш комментарий.
Похоже, это довольно расплывчатая ошибка, поэтому я расскажу, что я сделал, чтобы исправить ее, когда столкнулся с этим:
Используя Xcode 10.1 и Swift 4.2, я испробовал почти все предложения здесь, но ни одно из них не помогло мне, затем я понял, что зависимость, которую я использовал, несовместима со Swift 4.2, и из-за этого я получал эту ошибку на других модулях. Чтобы исправить это, мне просто пришлось заставить этот модуль использовать Swift 4.0, поместив это в конец моего Podfile:
post_install do |installer|
installer.pods_project.targets.each do |target|
if ['TKRadarChart'].include? target.name
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '4.0'
end
end
end
end
Для меня в сообщении об ошибке говорилось, что у меня открыто слишком много файлов симулятора для сборки Swift. Когда я вышел из симулятора и построил заново, все заработало.
Это было похоже на то, что я был подключен к реальному устройству, отключенному, и сборка работала нормально.
в моем случае проблема была связана с тем, что для расширения watchkit было установлено значение swift 3, в то время как цель основного проекта была установлена на swift 4,2
Это прямо здесь! Это меня так долго беспокоило! Когда вы добавляете фреймворки / расширения в свои библиотеки, убедитесь, что и расширение, и библиотека используют одну и ту же языковую версию Swift! Спасибо @Itay
pod install --repo-update, затем в папке чистой сборки xCode удалите производные данные, попробуйте построить снова после этого.