Сбой команды CompileSwift с ненулевым кодом выхода в Xcode 10

Добрый день,

После обновления до последней версии Xcode на данный момент (версия 10.0) проект не может построить, потому что он обнаружил некоторые ошибки в отношении ошибки "Command CompileSwift с ошибкой с ненулевым кодом выхода".

Как решить эти ошибки? Они появляются в большинстве Pods (я использую CocoaPods), которые я использую в своем проекте.

Я попробовал обновить версию pod и контейнеры до последней версии, но проблема все еще там.

Я много искал в Интернете и очень мало информации об этой проблеме.

С уважением.

Ответ 1

В настоящее время работает мой сборщик. Здесь вы делаете шаги, которые я пробовал, пока он, наконец, не работал:

  1. Искать во всем проекте слово CommonCrypto.
  2. Если у вас есть Pod, содержащий этот заголовок, удалите этот Pod из подфайла и выполните установку pod.
  3. Очистите и создайте проект.
  4. Добавьте снова Pod в подфайл и выполните установку pod.
  5. Очистите и снова создайте проект, используя, по возможности, реальное устройство.

И если у вас нет этого Pod, возможно, вы можете попробовать, выполнив те же шаги с некоторым старым Pod, с которым вы можете столкнуться в своем проекте.

Добавленная информация: также Если у вас есть некоторая ошибка кода внутри Pod, сначала вам нужно решить эту проблему с кодом, а затем попытаться снова скомпилировать проект.

Я собираюсь скопировать изменения, внесенные в проект project.pbxproj. Я знаю, что это не очень полезно, но это единственное, что изменилось в git-разнице:

Removed: BDC9821B1E9BD1B600ADE0EF /* (null) in Sources */ = {isa = PBXBuildFile; };
Added:   BDC9821B1E9BD1B600ADE0EF /* BuildFile in Sources */ = {isa = PBXBuildFile; };

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

С уважением.

Ответ 2

Для меня просто проект очистки работает с использованием Shift Command K и Option Shift Command K.

Ответ 3

У меня была эта проблема, и для меня изменился параметр "Режим компиляции" для проекта от "Инкрементный к целому модулю".

enter image description here

Ответ 4

Скорее всего, вы не читаете полное сообщение об ошибке. Если вы посмотрите выше сообщения "Сбой команды CompileSwift с ненулевым кодом выхода", вы должны найти некоторую спецификацию, подобную этой:

enter image description here

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

Ответ 5

Я пытался

  • Закрытие и повторное открытие Xcode
  • Очистка сборки папки
  • Запуск pod install --repo-update

и все это еще не решило проблему.

Перезагрузка Mac сделала свое дело !

Ответ 6

Очистите приложение и попытайтесь его снова создать, используя Shift Option Command K, затем Command B.

Ответ 7

У меня возникла проблема из-за отсутствия собственного Swift CommonCrypto, использовавшего соединительный заголовок и цель, которая с помощью некоторой магии включила его в сборку. Поскольку CommonCrypto теперь является нативным, я решил эту проблему, удалив цель и #import, и вместо этого добавил import CommonCrypto, где я его использовал.

Ответ 8

Это известная проблема с Swift 4.2 и Xcode 10. Я нашел здесь статью, которая исправила ее для меня: https://github.com/Yummypets/YPImagePicker/issues/236

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

Ранее я пробовал каждый из следующих методов, предложенных в другом месте (перестроить, выйти из Xcode, очистить и перестроить, очистить файлы производных данных). Никто из них не работал.

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

Ответ 9

Вот решение: - Перейти к настройкам сборки - Поиск SWIFT_COMPILATION_MODE - Если это "Целый модуль" для конфигурации Release, измените его на "Incremental". - Архив сейчас.

Когда вы меняете настройку на "Incremental", процесс преуспевает.

Ответ 10

Я сделал следующее, и это работает как шарм:

  • Открыть настройки Xcode (Command ,)
  • Перейдите на вкладку " Locations ".
  • Нажмите маленькую серую стрелку, которая показывает URL-адрес для Derived Data
  • Откроется окно поиска и покажет следующие папки:

    • DerivedData
    • Archives
    • iOS DeviceSupport
    • UserData
    • DocumentationCache
    • iOS Device Logs
  • Выйти из Xcode

  • Удалите папку DerivedData (она просто содержит кеш из предыдущих сборников)
  • Перезапустить Xcode

Ответ 11

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

Открыть цель → Сроки сборки → Скопировать ресурсы Bundle и удалить info.plist.

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

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

Ответ 12

Запуск pod install --repo-update закрытие и повторное открытие x-кода исправили эту проблему на всех моих модулях, в которых была эта ошибка.

Ответ 13

в моем случае проблема была в том, что расширение watchkit было установлено на swift 3, а основная цель проекта была установлена на swift 4.2

Ответ 14

Моя проблема была связана с именами. У меня было два файла с тем же именем. Просто переименовал их и решил.

Всегда нужно сначала проверить "тупую меня", прежде чем искать в другом месте. :)

Ответ 15

Повторное объявление класса будет проблемой. проверить дубликат класса и построить.

Ответ 16

Я искал всю сеть, но я не мог найти решение этой проблемы. Мне удалось удалить путь "Common Crypto" в разделе "Параметры пути IMPORT в настройках сборки". Проблема заключается в том, что "общий крипто" теперь существует в фундаменте в ios 12 sdk.

Так":

Просто удалите путь для файла "common crypto" в настройках сборки, и проект будет построен как шарм! :)

Ответ 17

Просто добавив к этому вопросу. Моя проблема не имела ничего общего с CommonCrypto. Он создал новое приложение для одного приложения и протестирован для запуска. Компилятор жаловался на использование Swift 4.2

Исправлена проблема с изменением языка Swift до версии 4.0 в настройках сборки. Не уверен, что это ошибка.

Ответ 18

Я получил это случайно после Xcode 10. Я думаю, что это происходит, когда я что-то меняю в коде при запуске здания. Следующая сборка работает каждый раз.

Ответ 19

Я также столкнулся с той же проблемой, и я сделал то, что предложил @cdeerinck, и получил следующую ссылку, которая предложила добавить пользовательскую переменную в настройки сборки, чтобы отключить пакетный режим, т.е. добавить новую пользовательскую переменную с именем SWIFT_ENABLE_BATCH_MODE и установить ее в НЕТ, Я смог получить больше информации о проблеме, и я узнал, что ошибка была в каркасе с использованием CommonCrypto, который был добавлен к нему (мной), но так как Xcode 10 экспонируется изначально как часть Swift (только для платформ Apple), и добавление его (или его существование из предыдущей версии) вызывало столкновение имен и, следовательно, оно вызывало ошибку. Чтобы узнать больше, обратитесь к этой ссылке, которая объясняет проблему более подробно.

Ответ 20

У меня та же проблема, и мое решение изменить мелочь в настройках сборки

SWIFT_COMPILATION_MODE = singlefile;
SWIFT_OPTIMIZATION_LEVEL = "-O";

Ответ 21

ERROR = Команда CompileSwiftSources завершилась с ненулевым кодом завершения

В моем случае, когда я обнаружил эту ошибку, я столкнулся с проблемой компиляции. Но когда я вижу ответы на некоторые проблемы. Я нашел файл дублирования в моем проекте. Где тот же viewController был там, как файл класса. Так что да, когда я понял это, я изменил название на новое. И да, все изменилось !!!

Ответ 22

Кажется, что это довольно расплывчатая ошибка, поэтому я поделюсь, что я сделал, чтобы исправить это, когда столкнулся с этим:

Используя 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

Ответ 23

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

Ответ 24

В моем случае в разделе " Входные файлы карфагенского фреймворка " в фазах сборки была дублирующаяся запись для каркаса.