Ошибка Xcode 10: несколько команд производят

error: Multiple commands produce '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist':
1) Target 'OptimalLive' has copy command from '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist' to '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist'
2) Target 'OptimalLive' has copy command from '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Server/Masonry/Info.plist' to '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist'
3) Target 'OptimalLive' has process command with input '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist'

запуск кода в Xcode9 работает, но приводит к ошибке в Xcode10.

Ответы

Ответ 1

Возможно, проблема возникает из-за нескольких Plist или других файлов в App-

Решение → Открыть цель → Этапы сборки> Скопировать ресурсы комплекта и удалить info.plist.

enter image description here

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

Ответ 2

Я нашел решение для этой ошибки сборки, для тех, кто имеет такую же проблему с системой сборки Xcode 10, выполните следующие действия, чтобы исправить это:

  1. В Xcode перейдите в File-> Настройки Project/Workspace.
  2. Измените систему сборки на систему Legacy Build.

enter image description here Он разрешит проблему сборки с новым Xcode 10.

Если вы хотите работать с новой системой сборки, вы можете найти справку по устранению неполадок на этой странице справки Apple Xcode.

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

Ответ 3

Перейдите в раздел Xcode → Файл → Параметры рабочей области. Вы найдете одно всплывающее окно.

enter image description here

Выберите " Legacy Build System " из тега Build System. Нажмите " Готово "

Примечание. - Убедитесь, что ваш проект очищен с помощью " cmd + shift + alt + k " и " Derived Data "

Создайте свой проект, он будет работать шармом :)

Ответ 4

Попробуйте это. Xcode-> Файл-> Проект Settings-> Система сборки → Legacy Build System.

Ответ 5

Если вы получаете это от команды Ditto создающей несколько экземпляров с одним и тем же именем (НЕ 'copy files' build phase), вам может потребоваться изменить имя Product Module Name.

  1. Нажмите на свою цель Xcode жалуется на
  2. Нажмите " Build Settings
  3. Поиск Product Module Name
  4. Измените имя на нечто уникальное

У нас есть целевая аудитория и несколько целей уведомления в нашем приложении, поэтому я просто помещаю такие вещи, как Extension в конец имени модуля.

Я нашел это решение изначально: https://forums.developer.apple.com/thread/103913

Ответ 6

Я экспериментировал с Core Data. Я построил модель данных для простой контрольной программы и создал 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. Убедитесь, что модель данных включена в список "Ресурсы копирования Bundle". Добавьте его, если он отсутствует.

Ответ 7

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

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 Info.plist file '/Users/<redacted>/Repositories/Whitesmith/optimize-ios/Carthage/Checkouts/WSStatusBarNotification/Miscellaneous/Info.plist'. (in target 'JDStatusBarNotification')

Итак, если это ваше дело, то просто перейдите к своей цели:

  1. Фазы сборки
  2. Скопировать ресурс Bundle
  3. Удалите info.plist.

Ответ 8

Если вы используете CocoaPods, вы можете попробовать деинтегрировать стручки и установить их снова. Меня устраивает.

pod deintegrate

pod install

Ответ 9

Попробуйте это:

В Xcode перейдите в File-> Настройки Project/Workspace.

Измените систему сборки на систему Legacy Build.

Ответ 10

Прочтите этот ответ, если сообщение об ошибке ссылается на файлы 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 в Build Transcript. Например:

<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 или около того. Ноль, один или два файла генерируются для каждого объекта/класса, в зависимости от настройки всплывающего окна Codegen. Это всплывающее окно находится в инспекторе моделей данных, когда вы выбираете объект при редактировании модели данных...

screenshot of Data Model Inspector

Настройки:

  • Ручной/ Нет Файлы не создаются
  • Категория/расширение Создается один файл Foo + CoreDataProperties.m или .swift, содержащий категорию Objective-C или расширение Swift.
  • Определение класса Генерируется тот же файл категории/расширения, и, кроме того, генерируется Foo + CoreDataClass.m или .swift, содержащий объявление и определение класса.

Итак, вы видите, что проблема возникает, когда разработчик (как я), который привык к старому Xcode, начинает проект в более новом Xcode. Мы считаем, что нам нужно использовать пункт меню "Создать подкласс управляемых объектов", который мы делаем, чтобы создавать файлы, которые мы можем видеть в Навигаторе проекта, не осознавая, что наши настройки во всплывающем окне Codegen заставляют Xcode создавать дубликаты файлов, которые Apple "Умно" не отображается в Навигаторе проектов, потому что они не доверяют разработчикам читать и учитывать комментарий в заголовке//Этот файл был создан автоматически и не должен редактироваться.

Решение 1 - использовать старый путь

Вы можете отключить все автоматические Codegen для модели данных только с одним параметром:

  • Откройте задачу Target Build Phases (В Project Navigator выберите проект, затем в появившемся списке TARGETS выберите цель задачи, затем перейдите на вкладку Build Phases).
  • Разверните запись источников компиляции и найдите модель данных о проблеме (файл .xcdatamodeld).
  • Удалить его из списка компиляции
  • Убедитесь, что модель данных включена в список ресурсов пакета копирования.

Решение 2 - Волшебство основных данных для начинающих

Здесь вы идете олл-ин на новый путь.

  • Оставьте вашу модель данных такой же, как в этих источниках компиляции.
  • В каждом Entity Inspector вашей модели данных установите Codegen на Определение класса.
  • В Навигаторе проектов удалите и удалите все файлы Foo + CoreDataClass и переименуйте любые файлы Foo + CoreDataProperties.m или .swift во что-то вроде Foo + MyProperties.
  • В каждом файле Foo + MyProperties.m или .swift, если есть свойства, сгенерированные Xcode, удалите эти свойства, поскольку они будут в скрытых файлах, созданных Codegen.

С этим решением ваши определения классов генерируются автоматически из модели данных каждой сборки. Вы даже не можете их видеть. Это Core Data Magic, приятное и простое для начинающих.

Решение 3 - Для большинства реальных приложений

Но решение 2 бесполезно, если вы действительно хотите добавить неуправляемые свойства. (Objective-C не позволяет добавлять свойства в категориях, а Swift не позволяет добавлять сохраненные свойства в расширениях.) Поэтому в большинстве реальных приложений вы, вероятно, захотите пойти на полпути между решениями 1 и 2…

  • Оставьте вашу модель данных в списке источников компиляции
  • В каждом Entity Inspector в вашей модели данных установите Codegen на Category/Extension.
  • В Навигаторе проектов удалите и удалите все файлы Foo + CoreDataClass.m или .swift и, чтобы уменьшить путаницу в будущем, переименуйте любые файлы Foo + CoreDataProperties.m или .swift, возможно, просто в Foo.m или .swift.
  • Убедитесь, что каждый файл Foo.m или .swift содержит определение класса, к которому вы можете добавить свои собственные неуправляемые свойства.

(Благодарность ответу Позитрон. Мой ответ здесь объясняет, почему работает ответ Позитрон (мое Решение 1), и добавляет Решение 2 и Решение 3.)

Ответ 11

В моем случае PDFGenerator создавал файл info.plist, я просто удалил его.

enter image description here

Ответ 12

У меня была та же проблема, у меня было еще одно вспомогательное приложение в главном приложении и скопировать его в ресурс. В моем случае решена как: -

1) Цель → 2) Сборка фаз 2) Копировать файл (n элементов) 3) Удалить файл копирования.

Приложение Helper автоматически копируется в Xcode 10.0.

enter image description here

Ответ 13

Ни одно из предложенных здесь решений не помогло мне. Это было особенно связано с 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. Открытое рабочее пространство и сборка

Ответ 14

Попробуйте этот вариант, любой из этих 3 вариантов будет работать для вас, наверняка

Option 1: Remove all files from

Цель >> Сформировать фазы >> Скомпилировать источники

Цель >> Сформировать фазы >> Скопировать ресурсы

Option 2: Change the build system

Xcode-> Файл-> Проект Settings-> Система сборки → Устаревшая система сборки

Option 3: remove and update existing pod

POD кеш очистить PromisesObjC
чистый кеш pod PromisesSwift
cd [your_project_dir]
rm -rf Подставки /
rm Podfile.lock
обновление pod

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

Ответ 15

Прежде чем начать, обратите внимание, что мой проект использует Карфаген в качестве менеджера зависимостей.

Ни один из существующих ответов здесь не разрешил мою проблему. Что мне удалось решить, так это следующее.

Во-первых, я заметил, что ошибка сборки указала на одну структуру в частности. Затем я отфильтровал App Target> Build Phases для этой структуры. Я заметил, что эта структура присутствовала как в "Link Binary With Libraries", так и в "Embed Framework". Отметив, что ни одна из фреймворков, перечисленных в "Embed Frameworks", не управлялась Карфагеном, я удалил рассматриваемую структуру из "Embed Frameworks". Затем я перестроил свой проект, и все работает отлично, включая функциональность, включенную в рамках данной структуры.

Ответ 16

шаги:

  1. Перейти к файлу Xcode
  2. Нажмите "Настройки рабочего пространства"
  3. Построить систему как устаревшую систему сборки

Ответ 17

Поэтому проблема, с которой я столкнулась, заключается в том, что я случайно включил Info.plist в настройки проекта → Build Phases → Copy Bundle Resources для моей цели.

Ответ 18

Одним из вариантов, который решил мою проблему, является изменение системы сборки на устаревшую систему сборки. Пожалуйста, выполните следующие шаги в Xcode 10+ enter image description here

enter image description here

Ответ 19

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

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

Ответ 20

Перейдите в фазу сборки проекта и удалите info.plist из источников компиляции. Это устранит эту проблему, и проект снова будет активен.

enter image description here

Ответ 21

Я использую Карфаген и Xcode 10.

Мое решение → Проект → Цель → Общие ->

Удалите фреймворки, добавленные в Carthage, из "Встроенные двоичные файлы"

обычно вам нужно добавить скрипт в Build Phases, чтобы удалить архитектуру для магазина приложений.

В Xcode 10 сценарий кажется всегда вызываемым. Поэтому он копирует фреймворки в нужное место, и вам не нужно добавлять их на вкладку "Общие".

Примечание: если не установлено → в настройках сборки → Пути поиска → Пути поиска в базе → установите путь к Framework u, добавленному в Carthage.... например. "$ (Project_dir)/Carthage/Сложение /IOS"

Ответ 22

У меня была эта проблема, когда у меня был файл с тем же именем в двух разных целях. По какой-то причине в одном из этих файлов у меня была часть обеих целей. Так что в основном у меня было два файла. И оба этих файла принадлежали одной цели.

Имеет смысл, что у цели может быть только одно имя файла для каждой цели, поэтому просто снятие отметки с поля целевого члена для файла, который не был связан с основной целью, устранил проблему.

Ответ 23

Моя проблема заключалась в том, что 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: снимите флажок Target1 разделе Test так как я знал, что Target2 импортировал Target1

Также отметим, Target2 флажок Target2 должен оставаться отмеченным в разделе " Test

Ответ 24

Имел подобную проблему, но с файлами.swiftdoc.

У меня есть расширения и единицы тестовых целей в проекте. И у них было одно имя "Product Module Name" (PRODUCT_MODULE_NAME в настройках сборки) в качестве приложения. После внесения имен уникальная проблема исчезла.

Ответ 25

Перемещение на 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.

Ответ 26

Вот еще одно рабочее решение: (Если вы используете Pods)

  • Выберите "Подложки" на боковой панели, как основные моменты на снимке экрана.
  • Нажмите "Построить фазу". Разверните раздел "Заголовки". Есть 3 варианта Public, Private, Project
  • Развернуть публикацию и проверить наличие дубликатов файлов. Убери это. СДЕЛАННЫЙ!!

enter image description here

Ответ 27

Выберите схему (в верхнем левом углу) → Изменить схему... → Построить (левая вкладка) → снимите флажок "Найти неявные зависимости"

enter image description here

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

Ответ 28

Один из моих CocoaPods был охарактеризован и вызвал проблему. Был ли обновлен модуль, и он работал нормально.

Я считаю, что это был LivePerson SDK

Ответ 29

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

Здесь необходимо удалить дополнительный файл Info.plist (в моем случае это было Contents.json)

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

Ответ 30

Это в основном означает, что у вас есть несколько файлов с именем Info.plist; Обычно это нормально, но случайно ваши файлы имеют одинаковое целевое членство. Итак, исправление: щелкните каждый файл и проверьте их целевое членство справа, убедитесь, что они не перекрываются.