Ошибка 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
.
Примечание. Если вы также разработали приложение для часов, то вам придется удалить лист с часов и их удлинитель.
Ответ 2
Я нашел решение для этой ошибки сборки, для тех, кто имеет такую же проблему с системой сборки Xcode 10, выполните следующие действия, чтобы исправить это:
- В Xcode перейдите в File-> Настройки Project/Workspace.
- Измените систему сборки на систему Legacy Build.
Он разрешит проблему сборки с новым Xcode 10.
Если вы хотите работать с новой системой сборки, вы можете найти справку по устранению неполадок на этой странице справки Apple Xcode.
Надеюсь это поможет!
Ответ 3
Перейдите в раздел Xcode → Файл → Параметры рабочей области. Вы найдете одно всплывающее окно.
Выберите " 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
.
- Нажмите на свою цель Xcode жалуется на
- Нажмите "
Build Settings
- Поиск
Product Module Name
- Измените имя на нечто уникальное
У нас есть целевая аудитория и несколько целей уведомления в нашем приложении, поэтому я просто помещаю такие вещи, как 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 в моем случае) находилась в списке "Источники компиляции". Проект скомпилирован, когда я удалил его из списка.
- Откройте навигатор проекта и выберите проект (первая запись вверху)
- Выберите цель сборки в разделе "Цели" на панели "Проекты и цели"
- Выберите вариант "Сборка фаз" в верхней части окна
- Разверните запись "Скомпилировать источники" и найдите имя модели данных. Найдите "xcdatamodeld", если у вас есть проблемы с поиском.
- Удалить модель из списка компиляции
- Убедитесь, что модель данных включена в список "Ресурсы копирования 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')
Итак, если это ваше дело, то просто перейдите к своей цели:
- Фазы сборки
- Скопировать ресурс Bundle
- Удалите
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. Это всплывающее окно находится в инспекторе моделей данных, когда вы выбираете объект при редактировании модели данных...
Настройки:
- Ручной/ Нет Файлы не создаются
- Категория/расширение Создается один файл 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, я просто удалил его.
Ответ 12
У меня была та же проблема, у меня было еще одно вспомогательное приложение в главном приложении и скопировать его в ресурс. В моем случае решена как: -
1) Цель → 2) Сборка фаз 2) Копировать файл (n элементов) 3) Удалить файл копирования.
Приложение Helper автоматически копируется в Xcode 10.0.
Ответ 13
Ни одно из предложенных здесь решений не помогло мне. Это было особенно связано с CocoaPods. Ранее я использовал Cocoapods 1.3.1. Простое обновление до 1.5.3 не решило проблему сразу.
Следующие шаги были следующими:
- Удалить Podfile.lock
- Удалить каталог Pods
- Удалить исходные данные и очистить
- Выход Xcode
- Обновление CocoaPods до 1.5.3
- Запустить
pod install
- Открытое рабочее пространство и сборка
Ответ 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
шаги:
- Перейти к файлу Xcode
- Нажмите "Настройки рабочего пространства"
- Построить систему как устаревшую систему сборки
Ответ 17
Поэтому проблема, с которой я столкнулась, заключается в том, что я случайно включил Info.plist в настройки проекта → Build Phases → Copy Bundle Resources для моей цели.
Ответ 18
Одним из вариантов, который решил мою проблему, является изменение системы сборки на устаревшую систему сборки. Пожалуйста, выполните следующие шаги в Xcode 10+
Ответ 19
У меня было Multiple commands produce
из Multiple commands produce
создающих предупреждения - не ограничиваясь дублированием info.plist в одной цели. Включая локализованные ресурсы и строковые файлы, заголовки и т.д.
Решение: удалите все дублирования в целевом членстве.
Ответ 20
Перейдите в фазу сборки проекта и удалите info.plist из источников компиляции. Это устранит эту проблему, и проект снова будет активен.
Ответ 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
- Развернуть публикацию и проверить наличие дубликатов файлов. Убери это. СДЕЛАННЫЙ!!
Ответ 27
Выберите схему (в верхнем левом углу) → Изменить схему... → Построить (левая вкладка) → снимите флажок "Найти неявные зависимости"
И после этого вам может потребоваться исправить любые зависимости, которые не были явно импортированы вашими целями.
Ответ 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
; Обычно это нормально, но случайно ваши файлы имеют одинаковое целевое членство. Итак, исправление: щелкните каждый файл и проверьте их целевое членство справа, убедитесь, что они не перекрываются.