Помилка Xcode 10: Випускається кілька команд


658

помилка: кілька команд створюють "/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist" з команди "1" має команду "1L". '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist' to '/ Користувачі / uesr / Бібліотека / Розробник / Xcode / DerivedData / OptimalLive-fxatvygbofczeyhjsawtebkimvwx / Build / Products / Debug-iphone / Debug-iphone .app / Info.plist '2) Завдання' OptimalLive 'має команду копіювання з' /Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Server/Masonry/Info.plist 'до' / Users / uesr / Бібліотека / розробник / Xcode / DerivedData / OptimalLive-fxatvygbofczeyhjsawtebkimvwx / Build / Продукти / Debug-iphoneos / OptimalLive.app / Info.plist '3) Завдання' OptimalLive 'має команду процесу з введенням '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist'

Запуск коду в Xcode9 працює, але в Xcode10 є помилка.


Щодо залежностей, якими керують какаоди, дивіться сторінку stackoverflow.com/a/52421345/334999
Shuo

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

Шановний читачу, прочитай КОЖНУ відповідь на це запитання, є багато різних речей, які можуть бути неправильними.
iluvcapra

Шлях переходу "Фази збірки-> Копіювати ресурси ресурсу". Перевірте ім'я файлу та видаліть його. Очистіть і запустіть
клопотання

Відповіді:


1222

Проблема може виникнути через кілька Plist або інших файлів у програмі,

Рішення -> Відкрити ціль -> Фази збірки> Скопіюйте ресурси ресурсу та видаліть info.plistзвідти.

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

Примітка. Якщо ви також розробили додаток для годинника, тоді вам доведеться видалити список із годинника та розширення для годинника.


12
Вам також може знадобитися шукати будь-які залежності, тобто CocoaPods для неправильно доданих файлів
info.plist

68
Щоб трохи уточнити: Ця помилка трапляється, оскільки нова система збірки Xcode 10 краще вирішує проблеми конфігурації проекту. Такі проблеми іноді можуть спричинити тонкі проблеми з вашою збіркою, тому їх добре виправити.
Рік Баллард

2
У моєму випадку мені довелося видалити деякі файли локалізації під назвою InfoPlist.strings
neowinston,

8
У моєму випадку я мав info.plistфайл в одній із моїх приватних залежностей від CocoaPods, яку отримували, оскільки він відповідав властивості podspec source_files. Я не потрібен info.plistфайл в моєму модулі, так що я просто видалив.
aapierce

3
Дякую! Я додав деякий час плагін розробників до мого коду деякий час тому, і він також мав файл info.plist, який суперечив моєму додатку info.plist
Christopher Smit

567

Я знайшов рішення для цієї помилки збірки, а для тих, хто має таку ж проблему із системою збірки Xcode 10, виконайте наступні кроки, щоб виправити це:

  1. У Xcode перейдіть у меню Файл-> Налаштування проекту / робочої області.
  2. Змініть систему складання на систему Legacy Build.

введіть тут опис зображення Він вирішить проблему збірки з новим Xcode 10.

Якщо ви хочете працювати з новою системою збірки, тоді ви можете знайти допомогу щодо усунення несправностей на цій довідковій сторінці Xcode Apple .

Сподіваюся, це допомагає!


4
Ви можете пояснити, чому виникає ця проблема, а також як вирішити цю проблему? @Akshay Sunderwani
user832

142
Ви не виправляєте проблему, ви просто їх приховуєте.
Каїо

4
Виправлення помилок побудови для власних проектів, що реагують. Дивіться проблему тут: github.com/facebook/react-native/isissue/20492 Існує можливе виправлення, якщо ви не хочете перейти на систему Legacy Build: github.com/facebook/react-native/isissue/…
Євген Тімм

6
Це не довгострокове виправлення. Врешті-решт застаріла система побудови вже не буде можливою.
Пол Кінг

6
Ну я на 100% приховую проблему замість того, щоб виправити її, оскільки жодне з цих рішень не працює. Здається, відома проблема з кокаоподами; дивіться github.com/CocoaPods/CocoaPods/isissue/7949 . Я сподіваюся, що якимось чином виправить себе до того часу, коли це рішення вже не є можливим.
SUDO

170

Перейдіть до Xcode -> File -> Settings Settings. Ви знайдете один подібний спливаюче вікно.

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

Виберіть " Legacy Build System " від тегу Build System. Натисніть на " Готово "

Примітка: - Переконайтесь, що очистіть проект за допомогою " cmd + shift + alt + k " та " Отримані дані "

Побудуйте свій проект, він буде працювати шармом :)


Наскільки я розумію, наші існуючі проекти зроблені у старому swift та xcode, які підтримуються старою версією swift та xcode. Тож раніше, що ми зробили, ми перейшли до "Налаштування групи-> Швидка застаріла система побудови" та вибрали попередню версію.
Hardik1344

Спочатку я мав його на "Swift Legacy Build System", але його було перемкнено після перезавантаження комп'ютера. Навіть якщо ви думаєте, що ви встановили цю програму правильно, вона все одно може бути варте подвійної перевірки.
EndersJeesh

Це рішення не виправляє питання, воно просто приховує.
Аргус

Також переконайтеся, що ви змінили налаштування робочої області для користувачів на ті ж;)
Вей Шень,


114

Спробуйте і це. Xcode-> Файл-> Налаштування проекту-> Система побудови -> Спадкова система збирання.


38
У цьому випадку Xcode позначає проблему в проекті, тому повернення до застарілої системи збирання просто приховає її зараз. Повідомлення Xcode про подібні проблеми є навмисним, і найкраще це виправити.
Рік Баллард

2
Якщо помилка є в створеному проектом CocoaPods, я б відключив нову систему збирання, поки нова версія CocoaPods не виправить проблему.
Рівера

@RickBallard має сенс зараз, що може бути правильним виправленням? начебто, є відповідь
роландо

1
Існує кілька причин подібних помилок, але ви можете прочитати більше про те, що це означає на help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0
Рік Баллард

73

Якщо ви отримуєте це з Dittoкоманди, що створює кілька екземплярів з тим самим іменем (NOT the 'copy files' build phase), можливо, вам доведеться змінити Product Module Name.

  1. Клацніть на ваші цілі (X), на які X скаржиться
  2. Натисніть на Build Settings
  3. Шукати Product Module Name
  4. Змініть ім’я на щось унікальне

У нашому додатку є ціль перегляду та кілька цілей сповіщень, тому я просто розміщую такі речі, як Extensionнаприкінці назви модуля.

Я знайшов це рішення спочатку тут: https://forums.developer.apple.com/thread/103913


1
Це працювало трохи чудово, але потім зірвалося з мостовим файлом.
Mohamad Kaakati

5
У моєму випадку мені довелося вибрати Allправоруч, де ви шукаєте, Product Module Nameщоб відобразити конфігурацію цієї збірки.
Ходсон

56
У мене така ж проблема в Xcode 10. Цей же проект добре працював у Xcode 9.4.1. Тож рішення дуже просте. Просто видаліть усі файли info.plist з цілі. Будь ласка, зробіть це для всіх файлів info.plist. Крок 1. Виберіть файл info.plist. 2. У інспекторі файлів Скасуйте проект у цільовому членстві. Потім запустіть проект. Дякую !
Кіт

12
Для мене мені довелося перейти до [Project_Name]> Phases Build> Copy Bundle Resources і видалити там копії
user3322509

5
@Bharath Не видаляйте файли info.plist зі свого проекту. Вам потрібно видалити лише цільове, як я вже згадував. Ми не можемо видалити info.plist, це дуже важливо для проекту.
Кіт

69

Я експериментував із основними даними. Я створив модель даних для простої контрольної програми та створив NSManagedObjects. Коли я складав проект, я отримав таку помилку:

error: Multiple commands produce '/Users/myUSerName/Library/Developer/Xcode/DerivedData/myCoreDateExperiment-gzbslaqdwglkzxemijpdqmizgyzc/Build/Intermediates.noindex/ myCoreDateExperiment /Debug-iphonesimulator/ myCoreDateExperiment.build/Objects-normal/x86_64/CheckListItem+CoreDataProperties.o':
1) Target ' myCoreDateExperiment ' (project ' myCoreDateExperiment ') has compile command for Swift source files
2) Target ' myCoreDateExperiment ' (project ' myCoreDateExperiment ') has compile command for Swift source files

Проблема полягала в тому, що модель даних (у моєму випадку CheckList.xcdatamodeld) була у списку "Джерела компіляції". Проект складено чисто, коли я його видалив зі списку.

  1. Відкрийте навігатор проекту та виберіть проект (найперший запис у верхній частині)
  2. Виберіть ціль побудови в розділі "Цілі" на панелі "Проекти та цілі"
  3. Виберіть параметр "Створити фази" вгорі
  4. Розгорніть запис "Збір джерел" та знайдіть назву вашої моделі даних. Шукайте "xcdatamodeld", якщо у вас виникли проблеми з його пошуку.
  5. Видаліть модель зі списку компіляцій
  6. Переконайтеся, що модель даних включена до списку "Копіювати ресурси ресурсів". Додайте його, якщо він відсутній.

EDIT

Як @WilliamT. пояснює в коментарях, вам потрібен xcdatamodeld у списку компіляцій. Натомість перейдіть до своїх об'єктів у файлі xcdatamodeld. Виберіть моделі, які помиляються, розгорніть ліву панель і змініть поле "Кодеген" на "Вручну / Немає".


36
Файл xcdatamodeld фактично повинен міститись у джерелах компіляції. якщо ви бачите цю помилку стосовно основних даних, це, ймовірно, ви викликали "Створити підклас NSManagedObject", але для вашого Entity встановлено Codegen = "Визначення класу". Це означає, що ви автоматично створюєте ці класи для вас, і ви створили їх вручну, щоб вони існували двічі.
Вільям Т.

1
ви рятувальник життя
user578386

1
@WilliamT. Отже, яким має бути значення Codegen, якщо потрібно викликати Створення підкласу NSManaged Object?
Каунтея

2
@Kaunteya Є можливість встановити Codegen на "Керівництво" на кожному атрибуті CoreData (таблиця)
William T.

1
Дотримуйтесь @WilliamT. поради, а потім очистіть і побудуйте.
PruitIgoe

40

Перевіряючи журнал збірки, я помітив попередження:

note: Using new build system
note: Planning build
note: Constructing build description
Build system information
warning: The Copy Bundle Resources build phase contains this target's Info.plist file '/Users/<redacted>/Repositories/Whitesmith/optimize-ios/Carthage/Checkouts/WSStatusBarNotification/Miscellaneous/Info.plist'. (in target 'JDStatusBarNotification')

Отже, якщо це ваш випадок, тоді просто перейдіть до своєї мети:

  1. Фази побудови
  2. Скопіюйте ресурс групи
  3. Видалити info.plist.

32
Файл info.plist не присутній у ресурсах для копіювання, все одно отримуючи ту саму помилку
bunty kumar

Видалення зайвого Info.plist з фази збирання ресурсів копіювання вирішило це для мене. Однак моє попередження було іншим, оскільки випадково до фази збирання ресурсів Copy Bundle Resources було додано інфо-список іншої цілі, але в рамках одного проекту. Попередження було: "попередження: дублікат вихідного файлу '... MyApp.app/Info.plist' у завданні: ProcessInfoPlistFile". І призводить до тієї ж помилки, що і в початковому запитанні: "помилка: кілька команд видають" ... MyApp.app/Info.plist "".
Мартін Полак

у моєму випадку це був файл "ЛІЦЕНЗІЯ" - після того, як я його видалив, проблема виправлена, тому я думаю, що проблема є загальнішою, ніж "пліст", просто здається, що я часто зустрічається частіше
нас

37

Якщо ви використовуєте CocoaPods, ви можете спробувати дезінтегрувати стручки та встановити знову. Це працює для мене.

pod deintegrate

pod install


Так, моя проблема була викликана пакетом стручків, і лише це вирішило проблему! дякую
CodeBrew

@Ming Chu Дякую
Н. Дер

30

Спробуйте це:

У Xcode перейдіть у меню Файл-> Налаштування проекту / робочої області.

Змініть систему складання на систему Legacy Build.


2
У цьому випадку Xcode позначає проблему в проекті, тому повернення до застарілої системи збирання просто приховає її зараз. Повідомлення Xcode про подібні проблеми є навмисним, і найкраще це виправити. Для отримання додаткової інформації див. Help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Рік Баллард

27

Прочитайте цю відповідь, якщо повідомлення про помилку посилається на файли Core Data

Синопсис: у вас можуть бути як автоматично генеровані, так і генеровані вручну файли класу об'єктів, керовані Core Data.

Ця відповідь застосовується, якщо перший рядок помилки стосується файлу Foo + CoreDataProperties.o або Foo + CoreDataClass.o . Приклад:

error: Multiple commands produce '/Users/me/Library/Developer/Xcode/DerivedData/MyApp-uebslaqdwgldkjemijpdqmizgyzc/Build/Intermediates.noindex/ MyApp /Debug-iphonesimulator/ MyApp.build/Objects-normal/x86_64/Foo+CoreDataProperties.o':

1) Target ' MyApp ' (project ' MyApp ') has compile command for Swift source files

2) Target ' MyApp ' (project ' MyApp ') has compile command for Swift source files

Першопричину можна побачити, розгорнувши розділ Compile Swift Source Files у складі стенограми. Наприклад:

<unknown>:0: error: filename "Address+CoreDataClass.swift" used twice: '/Users/myUserName/Projects/Jnky/Foo+CoreDataProperties' and '/Users/jk/myUserName/Developer/Xcode/DerivedData/MyApp-uebslaqdwgldkjemijpdqmizgyzc/Build/Intermediates.noindex/MyApp.build/Debug/MyApp.build/DerivedSources/CoreDataGenerated/Jnky/Foo+CoreDataProperties.swift'

Перший згаданий файл знаходиться у каталозі проекту у вихідному файлі, який хтось створив, вибравши модель даних у Навігаторі проекту та натиснувши в меню Редактор > Створити підклас керованого об’єкта . Ця функція була додана в Xcode 7 або близько того.

Другий файл - це однойменний файл, але він захований у Xcode DerivedData. Цей файл автоматично генерується Xcode під час кожної збірки, якщо .xcdatamodeldфайл моделі даних ( ) включений у фазу збірки джерел компіляції джерел цілі . Ця функція була додана в Xcode 9 або близько того. Нульовий, один або два файли створюються для кожної сутності / класу, залежно від налаштування спливаючого кодексу . Це спливаюче вікно знаходиться в Інспекторі моделей даних, коли ви вибираєте сутність під час редагування моделі даних ...

скріншот інспектора моделей даних

Налаштування:

  • Вручну / Ні. Файли не створюються
  • Категорія / Розширення Створюється один файл, Foo + CoreDataProperties.m або .swift , що містить розширення Objective-C або Swift.
  • Визначення класу Створюється той самий файл категорії / розширення, а крім того створюється Foo + CoreDataClass.m або .swift , що містить декларацію класу та визначення.

Отже, ви бачите, що проблема виникає тоді, коли розробник (як я), який звик до старих Xcode, починає проект у більш новій Xcode. Ми вважаємо, що нам потрібно використовувати пункт меню Створений підклас керованого об’єкта , який ми робимо, для створення файлів, які ми можемо бачити в Навігаторі проектів, не розуміючи, що наші параметри в спливаючому вікні Codegen викликають Xcode для створення дублікатів файлів, які Apple "Розумно" не відображається в Навігаторі проектів, оскільки вони не довіряють розробникам читати та прислухатися до коментарів у заголовку // Цей файл автоматично генерується та не повинен редагуватися.

Рішення 1 - Використовуйте старіший шлях

Ви можете відключити всі автоматичні Codegen для моделі даних лише одним налаштуванням:

  • Відкрийте етапи збирання проблеми (у «Навігаторі проектів» виберіть проект, потім у списку ЦІЛІВ, який з’явиться, виберіть ціль проблеми, а потім вкладку « Фази збірки» ).
  • Розгорніть запис « Збірник джерел» і знайдіть модель ( .xcdatamodeldфайл) проблемних даних .
  • Видаліть його зі списку компіляцій
  • Переконайтесь, що модель даних включена до списку Копіювати ресурси ресурсів .

Рішення 2 - Основна магія даних для початківців

Ось, ви все підете новішим шляхом.

  • Залиште свою модель даних такою, яка є в цих джерелах компіляції .
  • У кожному інспекторі суб'єктів у вашій моделі даних встановіть Codegen на визначення класу .
  • У «Навігаторі проектів» видаліть і сміття будь- яких файлів Foo + CoreDataClass і перейменуйте будь-які файли Foo + CoreDataProperties.m або .swift у щось на зразок Foo + MyProperties .
  • У кожному файлі Foo + MyProperties.m або .swift , якщо є властивості, згенеровані Xcode, видаліть ці властивості, оскільки вони будуть знаходитись у прихованих файлах, створених Codegen .

За допомогою цього рішення визначення вашого класу генеруються автоматично з моделі даних про кожну збірку. Ви навіть не можете їх побачити. Це основна магія даних , приємна та проста для початківців.

Рішення 3 - для більшості додатків у реальному світі

Але рішення 2 не корисне, якщо ви дійсно хочете додати не керовані властивості. (Objective-C не дозволяє додавати властивості в категорії, а Swift не дозволяє додавати збережені властивості в розширення.) Тому в більшості реальних програм ви, ймовірно, хочете пройти на півдорозі між Рішеннями 1 і 2 ...

  • Залиште свою модель даних у списку джерел компіляції
  • У кожному інспекторі суб'єктів у вашій моделі даних встановіть Codegen на категорію / розширення .
  • У Project Navigator, видаляти і сміття будь Foo + CoreDataClass.m або .swift файлів, і, щоб зменшити плутанину в майбутньому, перейменувати будь-який Foo + CoreDataProperties.m або .swift файли можливо тільки Foo.m або .swift .
  • Переконайтесь, що кожен файл Foo.m або .swift містить визначення класу, до якого ви можете додати свої власні не керовані властивості.

(Подяка за відповідь Positron. У моїй відповіді тут пояснюється, чому відповідь Позитрона (мій розчин 1) працює, і додає рішення 2 та рішення 3.)


це працювало для мене. ти неймовірний!
Srujan Simha

Гарна відповідь. Просто хотів додати, ви можете очистити скопійовані приховані файли, використовуючи "Продукт> Очистити папку збірки", після того як виправити кодген до Посібника / Жодного, взятого з коментаря звідси .
безсумнівно ,

21

Один з варіантів, який вирішив мою проблему, - це зміни системи побудови на застарілу систему збирання. Виконайте наступні кроки в Xcode 10+.

Тут я написав докладну статтю про проблему та її рішення. Помилка Xcode: Випускається кілька команд

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

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


1
Врятувало мені життя. Працювали чудово.
Рейнальдо

2
Ця відповідь однозначно вирішила, як 12 проблем, які у мене виникли в Xcode з React Native. Дякую!
Кріс

19

У моєму випадку PDFGenerator виробляв файл info.plist, я його просто видалив.

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


18

У мене була така ж проблема: у мене було ще одне допоміжне додаток у головному додатку та скопіюйте це у ресурс. У моєму випадку вирішується як: -

1) Ціль -> 2) Фази складання 2) Копіювати файл (n елементів) 3) Видалити файл копіювання.

Додаток Helper автоматично скопіюється у Xcode 10.0.

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


3
Копіювати файли + Копіювати видалення ресурсів групи допомогло видалення.
Олександр

Це працювало для мене з незначною модифікацією - у моєму випадку було декілька файлів на етапі файлів копіювання, якось одні і ті ж назви файлів були скопійовані в пакет кілька разів / двічі - в результаті виникла помилка: для видалення одного рядка потрібно виділити рядок / відфільтруйте ім'я, на яке скаржилося на помилку, та видаліть один рядок за знаком мінус (його завжди знаходиться в нижньому рядку), а не видаляйте цей крок усіх файлів копіювання.
AztecWarrior_25

16

Жодне із запропонованих тут рішень не працювало для мене. Особливо це було пов’язано з CocoaPods. Раніше я використовував Cocoapods 1.3.1. Просте оновлення до 1.5.3 не вирішило проблему одразу.

Наступні кроки:

  1. Видалити Podfile.lock
  2. Видалити каталог Pods
  3. Видалити отримані дані та очистити
  4. Вийдіть з Xcode
  5. Оновіть CocoaPods до 1.5.3
  6. Біжи pod install
  7. Відкрийте робочу область та складіть

5
Оновлення CocoaPods до 1.5.3 (sudo gem install cocoapods) та запуску (pod install) було достатньо, щоб він працював на мене. Дякую!
mikemike396

Я зробив кілька рекомендованих вище, але це було єдине, що вирішило для мене. Спасибі
Альмейда

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

1
Це працювало для мене, але я також повинен був додати install! 'cocoapods', :disable_input_output_paths => trueу верхній частині свого підфільму. Крім того, якщо ви не хочете оновлювати свої стручки - не видаляйте podfile.lock, і всі стручки будуть встановлені в їх поточній версії.
DoesData

11

Перш ніж почати зауважити, що мій проект використовує Карфаген як менеджер залежності.

Жодна з існуючих відповідей тут не вирішила мого питання. Що вирішило проблему для мене, було наступне.

По-перше, я помітив, що помилка збирання вказувала зокрема на одну рамку. Далі я відфільтрував ціль програми> Фази збірки для цієї рамки. Я помітив, що цей фреймворк присутній і в "Посилання бінарних з бібліотеками", і в "Вставити рамки". Зауваживши, що жодна з фреймворків, перелічених у розділі "Вставити рамки", не була керована Карфагеном, я видалив спірний фреймворк із "Вставити рамки". Потім я відтворив свій проект, і все працює добре, включаючи функціонал, включений у відповідну структуру.


1
Я використовував PODS. Видалення всього із вбудованих фреймворків працювало. Я прибираю та відновлюю без помилок. Старе рішення також працює, але не вирішує проблему (для тих, хто читає це). Я на xcode 10.2, cocoapods-1.6.1.
Надін Роуз

1
Я використовую Карфаген, і це зафіксував це для мене!
Девін Б

Я також використовував CocoaPods. Рамка підключена як струк розробки. "Вставити рамки" порожній і все ще отримав цю проблему
Лютен

11

Кроки:

  1. Перейдіть до Xcode File
  2. Клацніть Налаштування робочої області
  3. Виберіть систему побудови як застарілу систему побудови

4
У цьому випадку Xcode позначає проблему в проекті, тому повернення до застарілої системи збирання просто приховає її зараз. Повідомлення Xcode про подібні проблеми є навмисним, і найкраще це виправити. Для отримання додаткової інформації див. Help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Рік Баллард

Це працює для мене. Зміна назви продукту не означає. Оскільки мій продукт змішується з половиною коду target-c та швидким кодом. Моє питання: "Кілька команд виробляють swiftmodule"
wzhang84,

10

Спробуйте весь цей варіант, будь-хто із цього 3-го варіанту буде працювати для вас точно

Option 1: Remove all files from

Мета >> Фази побудови >> Збір джерел

Мета >> Фази збірки >> Копіювання ресурсів групи

Option 2: Change the build system

Xcode-> Файл-> Налаштування проекту-> Система побудови -> Спадкова система збирання

Option 3: remove and update existing pod

чистий кеш-пам'ять PromisesObjC
кеш-пам'ять Pod чистий PromisesSwift
cd [your_project_dir]
rm -rf Pods /
rm
оновлення Podfile.lock pod

I hope this will help you, Happy coding :-)

-1. Ні, це не працює "точно". Який сенс у видаленні джерел компіляції та копіювання ресурсів пакета ?! Проект не буде працювати без складання коду та ресурсів.
Лютен

9

Тож проблема, яка у мене була, полягає в тому, що я випадково включив Info.plist у налаштування проекту -> Фази збірки -> Скопіювати ресурси ресурсу для моєї цілі.


Це саме рішення було і для мене, оскільки ця помилка сталася під час спроби запустити tflite_camera_example у Xcode 10
zai chang

9

Ця проблема виникла у мене після додавання до програми другої частини набору тканин SDK.

Насправді трапилось те, що GoogleUtilies Framework був доданий двічі до проекту Pods

Два записи для GoogleUtilities.framework

Це було б добре до Xcode 10, але Xcode 10 скаржиться, якщо файл має дві дії проти нього (у цьому випадку копіювальна дія).

Безпечно видалити другий каркас.


Те ж саме для мене, але з використанням Карфаген тягне все .frameworks в бібліотеки розділу проекту
Роналдо Альбертіні

Ви виправили це @Damo
Harikarthick K

Я стикаюся з цим питанням, чи не могли б ви сказати мені, як це виправити, не змінюючи спадщини
Harikarthick K

9

Ось ще одне робоче рішення: (Якщо ви використовуєте власні Pods)

  • Виберіть "Стручки" на бічній панелі як основні моменти на екрані екрана.
  • Клацніть на фазі збірки. Розгорніть розділ «Заголовки». Є 3 варіанти "Публічний", "Приватний", "Проект"
  • Розгорніть паблік і перевірте, чи є дублікати файлів. Видали це. Зроблено !!

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


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

Також ви можете видалити звідси будь-які * .plist файли. Здається, це працює для користувацьких стручків.
Аміт Ахір

8

Я мав купу Multiple commands produceпопереджень - не обмежуючись дублюванням info.plist в одній цілі. Включаючи локалізовані ресурси та рядкові файли, заголовки тощо.

Рішення: видалити всі дублювання в цільовому членстві.


У мене була ця помилка, тому що у мене була ціль перегляду з її власним файлом infoplist.strings, який копіювався в ту саму директорію, що і основний файл infoplist.strings додатка. Коли вони будуються, вони обидва опиняються на одному місці.
Лік

7

У мене була ця проблема, коли у мене був файл з однаковим іменем у двох різних цілях. Чомусь в одному з цих файлів я був частиною обох цілей. Тому я мав два файли. І обидва ці файли належали одній цілі.

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


7

Я використовую Carthage та Xcode 10.

Моє рішення -> Проект -> Мета -> Загальне ->

Видаліть рамки, додані в Картах, із "Вбудованих бінарних файлів"

Вам зазвичай потрібно додати сценарій у фазах збірки, щоб зняти архітектуру магазину додатків.

У Xcode 10 сценарій, як видається, називається завжди. Таким чином, він копіює рамки в потрібне місце, і вам не доведеться додавати їх на вкладку Загальні.

Примітка: якщо не встановлено -> у Налаштуваннях збірки -> Шляхи пошуку -> Шляхи пошуку рамки -> встановіть шлях до фреймворку u, доданого разом із Картагеном .... наприклад. "$ (PROJECT_DIR) / Carthage / Build / iOS"


7

Варто зазначити, що ця помилка може виникнути після автоматичного генерування моделей CoreData, у яких Codegen не встановлено вручну / None.

Щоб виправити це в Xcode 10, двічі клацніть на вашому файлі xcdatamodeId і виберіть кожну з ваших сутностей і встановіть Codegen вручну / Нічого під класом у вашому Інспекторі даних даних.


Так! А також зробіть папку «Чиста збірка».
Дірк

6

Мав подібну проблему, але з файлами .swiftdoc.

У мене є розширення та блок тестових цілей у проекті. І вони мали те саме "Назва модуля продукту" (PRODUCT_MODULE_NAME у "Налаштуваннях збірки") як додаток. Після створення імен унікальної проблеми пішли.


6

Перехід до Xcode 10, на зразок помилок

error: Multiple commands produce '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist':

можна вирішити наступним чином:

Перейти до Xcode->File->Workspace/Project Settings-> Build System -> Legacy Build System.


2
У цьому випадку Xcode позначає проблему в проекті, тому повернення до застарілої системи збирання просто приховає її зараз. Повідомлення Xcode про подібні проблеми є навмисним, і найкраще це виправити. Для отримання додаткової інформації див. Help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Рік Баллард

цей зробив це для мене, ви, сер, геніальний
samouray

6

Перейдіть до етапу збирання проекту та видаліть info.plist із джерел компіляції. Це питання буде видалено, і проект знову буде активним.

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


6

Один з моїх CocoaPods був опудрований і викликав проблему. Чи було оновлення стручків, і це працювало чудово.

Я вважаю, що це можливо був SDK LivePerson


для мене я просто повинен був зробити "pod install"
Pnar Sbi Wer

6

Моя проблема полягала в тому, що Xcode 10 запускається в Mojave, і при спробі запустити тестові одиниці, які я писав перед оновленням до XCode 10.

У моєму випадку у мене виникло це питання під час виконання TestTargetмішені. Щоб вирішити, мені довелося:

  • Видалити одну із цільових залежностей (в TestTarget > build phases > Target Dependencies)

оскільки у мене були ще дві цілі, окрім моїх, TestTargetі обидва виконували один і той же сценарій та створювали / копіювали файли в певний момент.

І це суперечило тому, що згадувалося в примітках до випуску системної системи для Xcode 10 тут :

Це помилка для будь-якого окремого файлу в збірці, який повинен створюватися більш ніж однією командою збірки. Наприклад, якщо дві цілі декларують один і той же вихідний файл із фази сценарію оболонки, розподіліть декларацію вихідного файлу в одну ціль.

Новий ОНОВЛЕННЯ після оновлення з Xcode 10.1 до 10.2

Подібна проблема знову з’явилася після оновлення до Xcode 10.2. У мене є кілька цілей за проектом: Target1і Target2, і я вирішив цю проблему:

  • навігація до Edit Scheme > Buildта
  • видалення однієї з цілей не будується: зніміть прапорець Target1під, Testоскільки я знав, що Target2імпортуєтьсяTarget1

Також тут слід зазначити, Target2що прапорець має залишатись підTest


6
error: Multiple commands produce '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings':
1) Target 'chat21' (project 'chat21') has copy command from '/Users/KunshtechNew/Downloads/chat21-ios-demo-master/TildeskWidget/Chat21Core/Base.lproj/Chat.strings' to '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings'
2) Target 'chat21' (project 'chat21') has copy command from '/Users/KunshtechNew/Downloads/chat21-ios-sdk-master 2/Chat21Core/Base.lproj/Chat.strings' to '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings'

Щоб позбутися цієї проблеми, можна вирішити два варіанти:

Рішення 1

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

Рішення 2

Ще одне просте рішення, яке я знайшов, коли стикаюся з однотипними питаннями для різних проектів. Цього разу мені довелося застосувати інше рішення.

  • pod deintegrate від проекту.
  • Видаліть файл робочої області та файл pod.lock із папки проекту.
  • Знову pod install і спробуйте побудувати проект.

Сподіваюся, це може працювати для вас ..

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