Ошибка сборки Xcode 10 с ошибкой Command CompileSwift с ненулевым кодом выхода

Я недавно обновил XCode до версии 10 и начал получать странную ошибку при попытке построить мой проект. Я в настоящее время на Swift 4.0, и я попытался обновить до версии 4.2 Swift. Но когда я это сделал, я получил эту же ошибку во многих моих фреймворках.

Сбой команды Compile Swift с ненулевым кодом завершения

Пока я удалил производную папку. Обновил все модули, также удалил все модули и переустановил их, используя команды терминала ниже.

sudo gem install cocoapods-deintegrate cocoapods-clean
pod deintegrate
pod clean
pod install

Это не сработало, чтобы исправить мою проблему. Тем не менее, я нашел кое-что, что могло бы сработать, добавив arm64 в Build Setting → valid architectures и включив автоматический код. Но, когда я проверил, это уже было, и подписывание кода уже было включено.

Кроме того, у меня есть несколько других ошибок сборки, связанных с фреймворками.

SwiftMessages

Значение типа 'SwiftMessages.Config' не имеет члена 'presentationContext'

WhatsNewKit

Отсутствует аргумент для параметра 'backgroundColor' в вызове '

Я открыл проблемы с разработчиками каждой из этих платформ, чтобы обратиться за помощью в этих вопросах.

Проблема на GitHub SwiftMessage Проблема на GitHub WhatsNewKit

Когда я нажимаю presentationContext он приводит меня к структуре в рамках SwiftMessages Framework. Обычно, когда я получаю предупреждение "нет члена", я не могу щелкнуть, чтобы увидеть исходное место, где оно существует.

Я предполагаю, что это как-то связано с cocoa-бобами, но пока не удалось найти решение. Что я могу сделать, чтобы исправить эту проблему? Если бы кто-нибудь мог помочь, я был бы очень признателен, если бы я оставался в этом на один день.

Обновление: две последние сборки были для быстрой версии 4.2. Когда я изменил версию каждого фреймворка на тот, что был встроен в swift 4.0, я получил проект для сборки.

Ответ 1

Убедитесь, что ваша версия Swift Language Version находится в правильной версии. SwiftMessages 6.0.0 работает с Swift 4.2. Xcode->Project->Target->Build Settings->Swift Language Version

Ответ 2

для pod SwiftMessages, если ваше приложение не быстрое 4.2, вам нужно указать версию 5.01 pod 'SwiftMessages', '~> 5.0.1'

и он будет работать как шарм

Ответ 3

Установите версию Swift на 4.2, затем деинтегрируйте pod, установите pod, исправьте эту проблему для меня. Спасибо @alejandro-iván

Ответ 4

У меня было несколько фреймворков (доморощенных) плюс мое приложение. Каким-то образом они оказались несинхронизированы до версии Swift. Убедитесь, что все фреймворки имеют одинаковую версию. В моем случае все они должны были быть установлены на Swift 4.2. Если вы еще не выполнили переход на 4.2, помните, что Xcode помогает с этим: Правка → Преобразовать → В текущий синтаксис Swift.

Ответ 5

Я решил так:

  1. Комментировать все файлы в файле .pod
  2. С вашего терминала запустите команду pod install --no-repo-update
  3. Open Xcode выполняет очистку и восстановление проекта
  4. Теперь откройте файл .pod и раскомментируйте первую библиотеку
  5. С вашего терминала запустите команду pod install

Повторите шаги 2 - 3 - 4 -5 для каждой библиотеки uncomment в вашем файле .pod

Надеюсь, это поможет.

Ответ 6

Убедитесь, что в настройках вашей сборки проекта уровень оптимизации отсутствует в " Без оптимизации" [-Onone].

enter image description here

Ответ 7

Все ответы были полезны для меня. В моем случае я устанавливаю фреймворки только вручную, но такая проблема также возникает. Я попробовал все ответы и все еще получал эту проблему во время сборки. Любопытно, что во время кодирования я мог щелкнуть кнопкой мыши и разрешить все "отсутствующие" компоненты. Я также очистил и удалил производные данные, перезапустил Xcode и т.д.

В конце концов я получил его, вызвав эти дополнительные шаги:

По каждому из рамочных проектов/целей (включая мою):

  • Проверьте согласованную версию Swift (4.2 в моем случае)
  • Установить для сборки только для активной архитектуры значение Нет
  • Установите для Valid Architecture значение arm64, armv7 (для соответствия базовому проекту)
  • Установите уровень оптимизации на Нет (для отладки)
  • Установить режим компиляции на весь

Ответ 8

Та же проблема произошла со мной в Xcode 10.2, это была ошибка Xcode..! Итак, я открыл в более старой версии XCode (9.4), и он работал нормально. Затем я обновился до Xcode 10.2.1 после его выпуска → Очистите и постройте свой проект, теперь моя проблема решена.

Ответ 9

В моем случае я подключаю реальный iphone, а не симулятор и запускаю приложение на нем, это решило проблему. Но сначала подключите iphone, затем выберите его в этом меню и нажмите кнопку запуска. Проблема тоже решит.

enter image description here

Ответ 10

Я наткнулся на эту проблему при обновлении до Xcode 10.2 и Swift 5. После того, как попробовал все, я нашел это в примечаниях к выпуску:

Компилятор Swift может дать сбой во время сборки, когда включен Thread Sanitizer. (48719789)

И, конечно же, после отключения Thread Sanitizer мой проект может быть скомпилирован без ошибок снова.

Так что, если вы получили эту ошибку и включили Thread Sanitizer - выключите его!

Ответ 11

У меня та же проблема, у меня версия Xcode 10.2.1 (10E1001), версия Cocoapods 1.7.0.beta.2.

Я вернулся к Cocoapods 1.6.1, и проблема была решена. Конкретные шаги:

  1. pod deintegrate чтобы отменить интеграцию.
  2. Удалите все Cocoapods.

    for i in $( gem list --local --no-version | grep cocoapods );
    do
        gem uninstall $i;
    done
    
  3. Установите стабильную версию Cocoapods. На данный момент это 1.6.1.

    gem install cocoapods
    
  4. Чистый проект и пустые DerivedData

  5. pod install
  6. Перекомпилируйте проект

Ответ 12

Позвольте мне поделиться своим опытом с исправлением этой проблемы.

Откройте цель → Этапы сборки → Копировать ресурсы комплекта и удалите info.plist.

Примечание. Если вы используете какие-либо расширения, удалите info.plist этого расширения из целей.

Надеюсь, поможет.

Ответ 13

В моем случае это была ошибка кода:

self.myDto.map{ (dto)} in 
      var stringValue = (dto.value(forKey: "name") as! String)
      stringValue.append("c")
      return stringValue
}

Просто удалил эту переменную stringValue чтобы stringValue проблему.

Ответ 14

У меня просто было то же сообщение об ошибке, и ни один из ответов здесь и в дубликатах этого вопроса не был применим к моему проекту или полезен. Я продолжал читать сообщения об ошибках и пришел к выводу, что я тупо назвал два отдельных файла swift в разных папках с одним и тем же именем, намереваясь изменить одну, но перед тем, как изменить одну, я попытался запустить свой проект и был раздражен в течение последнего часа.

В итоге, не случайно называйте ваши файлы одинаковыми именами и внимательно читайте коды ошибок!