Помилка збірки за допомогою команди "Помилка команди з ненульовим кодом виходу"


83

Коли я намагаюся створити свій додаток за допомогою Xcode, помилка перериває процес збірки:

Помилка команди CompileStoryboardз ненульовим кодом виходу

Іноді замість цього відображається така помилка:

Помилка команди CompileSwiftз ненульовим кодом виходу

У мене ввімкнено систему нової збірки .

Що я можу зробити, щоб це виправити?


У Xcode 10 - stackoverflow.com/a/52722094/822420 це може допомогти вам
таран

Відповіді:


45

Закриття Xcode для мене не мало ефекту. Натомість я очистив проект за допомогою CommandShiftK.


Я також знайшов ще одну причину: я мав посилання на раскадровку на іншу розкадрування, яку я видалив. Швидке виправлення було видалення цього.

введіть тут опис зображення


Ну, закриття вашого проекту не очищає його, тому воно не спрацювало :)
Під керівництвом

32

Коли ви припиняєте будувати проект, коли компілятор знаходиться посеред чогось "важливого", ця помилка може з'явитися. У такому випадку, будуючи проект знову і дозволяючи йому закінчити, як правило, ця помилка зникає.


8
Не працював у мене. Ця помилка з’явилася під час спроби локалізувати info.plistфайл.
Рікардо Мутті,

2
Також не працював зі мною, особливо коли я намагаюся вкласти фреймворк, який я створив раніше.
Абдулрахман Масуд

3
Не працював. Також спробував очистити папку збірки за допомогою команд + alt + shift + k. Жодної реакції.
атерешков

9 січня 2019 р. З Xcode 10.1, і це точно не правильна відповідь
NSDumb

2
Спочатку прибирання (CMD + SHIFT + K), потім будівництво (CMD + B) працювало для мене
Даніель Спрінгер

28

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

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

Раніше я спробував кожен із запропонованих тут методів (відновлення, вихід із Xcode, очищення та відновлення, очищення файлів похідних даних). Жоден з них не працював.

Після того, як я додав налаштування побудови користувацького визначення до статті, Свіфт повідомив мені справжню помилку. У моєму випадку це було відсутнє}, але це може бути будь-яка кількість проблем.


21

Я також зіткнувся з такою ж проблемою в xcode 10 і спробував усі запропоновані рішення, але нічого не працює.

Потім я видалив усі файли та папки наступної папки:

~/Library/Developer/Xcode/DerivedData

і це спрацювало як шарм.


9
Ця відповідь спрацювала. Для копіювання та прохідності в терміналі використовуйте це:cd ~/Library/Developer/Xcode/DerivedData && open .
tww0003

1
дякую, я шукав рішення годин, ви врятували день!
ikel

Я навіть не можу знайти цей шлях. Але зробив фокус із кодом @ tww0003.
Dpedrinha

@ Dpedrinha Так, тому що це моя локальна система. Зараз я оновив шлях, і ви зможете його знайти.
Krishna Meena

11

Ця помилка трапилася зі мною, коли я забув змінити властивості сутності перед створенням підкласу NSManagedObject. Вирішено:

  1. видалити Entity+CoreDataClass.swiftі Entity+CoreDataProperties.swift.
  2. у "класі" інспектора моделі сутності змініть "модуль" на Current Product Moduleта "codegen" на Manual/None.
  3. відтворити NSManagedObject.

зображення


Що таке CoreDataClass ?
Ігор Ганапольський 02

9

Я зіткнувся з цією помилкою, коли оновлював свій проект із Swift 4 до 5. Спочатку я оновив усі свої стручки до їх останніх версій. Коли я будував, деякі стручки показали цю помилку.

Наступні кроки вирішили цю проблему для мене:

  1. Видалено всі стручки з Podfile
  2. Виконано pod installдля видалення всіх встановлених стручків
  3. Виконано pod deintegrateдля видалення підтримки для CocoaPods
  4. Дистанційні Podfile.lockі .xcworkspaceз мого проекту так не CocoaPods більше
  5. Зараз мій проект - це чисто проект Xcode
  6. Відкрив мій проект із звичайного .xcodeprojфайлу
  7. Swift версію мого проекту змінено на Swift 5
  8. Очищений проект (cmd + shift + K)
  9. Вийшов із Xcode
  10. Відновив всі стручки в моєму Podfile
  11. Виконується pod installдля реінтеграції CocoaPods та додавання моїх стручків
  12. Відкрив проект із .xcworkspaceфайлу
  13. Очищений та відновлений
  14. Деякі старі стручки, які все ще використовували Swift 4.0 (у моєму випадку SlideMenuControllerSwift) були встановлені на Swift 5.0, спричинили багато помилок побудови в їх коді. Я виправив його назад до Swift 4.0, відкривши проект Pods та вибравши його ціль.
  15. Знову очищений, перебудований.

Зараз у мене є лише помилки у моєму власному коді проекту, пов’язані з різницею у створеній мною версії Swift. Моє завдання зараз - їх виправити.


Що робити, якщо ми використовуємо Карфаген замість Pod?
ІгорГанапольський 02

8

У мене виникла помилка Command LinkStoryboards failed with a nonzero exit code, і я виявив, що використовую посилання на неіснуючу розкадрування. Нещодавно я змінив назву файлу розкадровки, тому зміна посилання зі "старого" імені на "нове" ім'я вирішило це для мене.
Можливо, у вас не точно така ж помилка, як у мене, але простішим способом знайти більш детальне пояснення помилки є:

  • Показати навігатор проблем (поки відображається помилка часу збірки)
  • Клацніть на помилку: Клацніть на помилку в навігаторі проблем
  • Потім ви побачите більше про свою помилку: Не вдалося виконати команду LinkStoryboard із ненульовим кодом виходу


Сподіваюся, це допоможе. Будь ласка, я усвідомлюю, що відповідаю з досвіду на помилку, іншу, ніж запитання про це, але я вважаю, що ця порада повинна допомогти вам подолати подібні проблеми!


7

Якщо у вас декілька цілей, де дві або більше цілей мають файли з однаковим іменем, перевірте цільове членство цих файлів у інспекторі файлів. Помилка виникає, коли кілька екземплярів однаково іменованого файлу встановили цільове членство для однієї цілі.



4

Оскільки ця проблема, схоже, має десятки можливих рішень, і першопричина може бути дуже розмитою, я кину свою ситуацію на ринок. Половина моїх стручків зазнала невдачі з якоюсь CompileSwiftSourceвідмовою, але лише в архіві. Я все ще міг створити для пристрою та симулятора дуже добре. Я спробував багато (якщо не всі) запропонованих тут рішень, не маючи удачі. Один із стручків мав трохи іншу помилку перед CompileSwiftSourceпомилкою, тому я перейшов до оновлення та спроби виправити цей єдиний стручок. Це була Cacheбібліотека для iOS, яка давно не оновлювалася. Була вилка, яка вирішила проблему з оновленням до Xcode 10.2, яку я зміг оновити, а після цього всі інші проблеми подбали про себе. Тож шукайте єдиного вибійника у своїх стручках, якщо ви змушуєте купу їх помилятися, і починайте там.


3

У моєму випадку я був чистою папкою збірки, потім перезапустіть mac, тоді це працює.


3

У мене був JSONwebtokenвстановлений стручок, і це спричиняло проблеми. Мені потрібно було видалити папку CommonCrypto, яка знаходиться в JSONWebtokenпапці pod. Ось -> посилання <- пояснення проблеми. Це почалося у Xcode 10.


2

У моєму випадку я використовував занадто складні ініціалізації всередині розширення класу. Це раптом зламало мою побудову.

class MyClass { }
extension MyClass {
static var  var1 = "", var2 = "", var3 = "", var4 = "", ...., var20 = ""
}

Вирішено:

class MyClass { }
    extension MyClass {
    static var var1 = "",
    static var var2 = "",
    static var var3 = ""
    static var var4 = "", ...., 
    static var var20 = ""
    }


2

Помилка команди CompileSwift із ненульовим кодом виходу

Ця помилка трапляється під час перенесення коду з Xcode 9 на Xcode 10+. Це через будь-яку назву класу суперечить існуючим класам apple. Наприклад: держава, подія тощо.

  1. Отже, спочатку змініть ім’я класу / структури, якщо воно існує у вашому коді, наприклад „State”, на „StateDetail”

  2. Якщо в ціль додано Info.plist, видаліть із нього галочку, щоб він не копіював пакет програм (остання причина безпеки Xcode10).

    • Виберіть файл Info.plist і зніміть прапорець біля пункту "Цільове членство" в правому боці Інспектора посвідчень

І знову побудуйте код !!!


2

У моєму випадку проблема полягала в тому, що я призначив клас .swift для viewController в розкадровці, тоді як проект був ціллю C.


2

Я спробував багато варіантів, які тут обговорювали.

  • Видаліть і переінсталюйте стручки
  • Чиста папка складання
  • Видалити похідні дані
  • Додайте SWIFT_ENABLE_BATCH_MODE і встановіть для його значення значення НІ
  • Перезапуск Xcode та перекомпіляція
  • Перезапуск iMac та перекомпіляція
  • встановіть режим компіляції на Додатковий
  • Змінені налаштування збірки: SWIFT_COMPILATION_MODE = єдиний файл і SWIFT_OPTIMIZATION_LEVEL = "-O"

Нічого не працювало. Я використовую бета-версію Xcode версії 11.0 (11M336w).

Нарешті я завантажив нову копію і замінив ту, яку встановив раніше. Це була та сама точна версія. Це зробило трюк.


2

У моєму випадку мова йшла про наявність файлу з назвою Location. після певного копання я з'ясовую, що мова йшла про наявність двох файлів з однаковим ім'ям (дивно). Тому що я цього не роблю, це було вирішено видаленням файлу та додаванням іншого файлу з іншою назвою.

filenames are used to distinguish private declarations with the same name

2

Я отримав цю помилку під час спроби запустити свої модульні тести в підмодулі. Що я зробив, це:

Змінити симулятор => Очистити проект => Створити проект => Запустити модульні тести .

Після цього мої модульні тести проходили без проблем.



1

У мене така проблема, і моє рішення - змінити дрібницю в налаштуваннях збірки:

SWIFT_COMPILATION_MODE = singlefile;
SWIFT_OPTIMIZATION_LEVEL = "-O";

мені це вдається


1

Добре, у мене була та ж проблема з Xcode 10. Я зазвичай використовую розкадрування для кожного подання, таким чином, якщо хтось допомагає, простіше скласти код. Мені потрібно було зробити одне з переглядів на одній розкадровці початковим контролером перегляду.


Будь ласка, поясніть це далі, я не отримую цієї відповіді повністю
Мохсін Хубайб Ахмед

Отже, у вас може бути більше однієї розкадровки, і в додатку Multiview я використовую розкадрування на кожному перегляді, для модульності, і таким чином, якщо хтось працює над іншою частиною програми, набагато легше втягнути ці зміни. У ViewControllers є можливість зробити його початковим контролером перегляду для тієї розкадровки, яка завантажується під час дзвінка, storyboard.loadInitialView() а на одній розкадровці ця опція не була натиснута, а коли я натиснув, вона зник.
jimistephen

1

У моєму випадку це було помилкове перейменування файлу в існуючий файл в іншій папці (Група), просто перейменуйте його на те, що було, тоді помилка зникла



1

Для мене проблема полягала в тому, що на моєму Podfile я не ставив use_frameworks!. Я просто коментую цей рядок, знову запускаю pod installтермінал. І це виправили.

Це було прокоментовано, оскільки додаток повністю зроблено на Objective-C. Оскільки зараз програма використовує Swift, мені довелося внести цю зміну в Podfile


1

У мене була та сама помилка: перезапуск Xcode та перекомпіляція Виправили проблему для мене.


1

Я отримав ту ж помилку під час зв’язування окремих розкадрувань. Помилка "Не вдалося виконати команду CompileSwiftSources із ненульовим кодом виходу." відображається, тому що я просто забув встановити контролер перегляду всередині другої розкадровки, яку я посилаю як "початковий контролер перегляду".


0

Що допомогло мені встановити , Compilation Modeщоб Incrementalдля будь-яких змін Target's Build Settings. У Whole moduleрежимі компіляції я отримав помилки. Але це налаштування призвело до того, що проект будувався повільніше.


0

Якщо ви стикаєтеся з такою помилкою у новій версії MacOS.

xcrun: помилка: недійсний активний шлях розробника (/ Library / Developer / CommandLineTools), відсутній xcrun за адресою: / Library / Developer / CommandLineTools / usr / bin / xcrun

Це означає, що вам потрібно встановити командний рядок XCode, відкрити термінал і запустити цю команду:

$ xcode-select --install


0

Те, що спричиняло ці помилки для мене (я отримував 8+ для деяких моїх кокаподів), було виправлення будь-яких проблем з побудовою виконання під час усіх стручків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.