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.

102 ответа

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

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

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

Note: If you have developed a watch app too then you will have to remove the plist from the watch and watch-extension as well.

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

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

Это решит проблему сборки с новым Xcode 10.

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

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

Перейдите в Xcode -> Файл -> Настройки рабочего пространства. Вы найдете одно всплывающее окно, как.

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

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

Примечание:- Обязательно очистите ваш проект с помощью "cmd + shift + alt + k" и "Производные данные"

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

Я экспериментировал с 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. Выберите опцию Build Phases в верхней части
  4. Разверните запись "Компилировать источники" и найдите название модели данных. Ищите "xcdatamodeld", если у вас возникли проблемы с его поиском.
  5. Удалить модель из списка компиляции
  6. Убедитесь, что модель данных включена в список "Копировать ресурсы комплекта". Добавьте его, если он отсутствует.

Попробуйте это тоже. Xcode->File->Project Settings-> Build System -> Legacy Build System.

Если вы получаете это от 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

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

pod deintegrate

pod install

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

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,

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

  • Откройте проблемные этапы сборки цели (в Навигаторе проектов выберите проект, затем в появившемся списке ЦЕЛЕЙ выберите целевой объект задачи и перейдите на вкладку Фазы сборки).
  • Разверните запись источников компиляции и найдите модель данных проблемы (.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.)

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

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

Решение 3.
Если вы используете CocoaPods, вы можете попробовать деинтегрировать модули и установить их снова. Команды:

       1) pod deintegrate
2) pod install

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

1) Цель -> 2) Этапы сборки 2) Копировать файл (n элементов) 3) Удалить файл копирования.

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

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

В Xcode, перейдите в File->Project/Workspace settings.

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

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

Один из вариантов, который решил мою проблему, - это изменить систему сборки на устаревшую систему сборки. Пожалуйста, выполните следующие шаги в Xcode 10+.

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

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

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

Я использую XCode 11.4. Не могу собрать старый проект.

Xcode => Файл => Настройки проекта => Система сборки => Устаревшая система сборки

есть несколько причин, которые вызывают эту ошибку.

1- имя проекта совпадает с зависимостью, используемой в проекте.

эта ошибка может произойти, когда вы выбираете имя для своего проекта, которое совпадает с одной из зависимостей, которые вы используете в проекте, например, вы не можете выбрать FirebaseAuthили же GoogleSignInв качестве имени проекта, если вы используете их через модуль или SPM.

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

выберите проект на левой боковой панели, измените имя проекта с file inspector-> Identity and Type-> nameс правой боковой панели.

после того, как вы измените его, XCode попросит вас изменить все относительные цели и просто нажать «переименовать».

2 - дублированный файл info.plist в части ресурсов Copy Bundle

вы можете столкнуться с этой ошибкой, когда info.plist добавляется в Copy Bundle resourcesнежелательно, выберите форму проекта project navigator-> выбрать цель -> перейти Build Phasesвкладка -> Copy Bundle Resourcesи если вы видите там info.plist, удалите его, выбрав info.plist, как показано на следующем изображении.

3 - плохо работают файлы pod

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

1 - Удалить Podfile.lock

2 - Удалить каталог стручков

3 - Удалить производные данные и очистить (вы можете найти этот каталог из XCodeменю -> Preferences...-> Locations-> Derived Dataи перейдите в каталог, нажав на значок со стрелкой справа от адреса)

4 - Выйти из Xcode

5 - Обновите CocoaPods с помощью [sudo] gem install cocoapodsна терминале Mac

6 - перейдите в каталог проекта на терминале и запустите pod install

7 - Открыть рабочее пространство и построить

5- дублированные основные данные

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

сначала я объясню типы codegen coreData:

**Определение класса: ** Выберите определение класса, если вам не нужно редактировать свойства или функциональные возможности подкласса управляемого объекта и файлы свойств, которые Core Data генерирует для вас.

Категория/расширение: выберите категорию/расширение, чтобы добавить дополнительные удобные методы или бизнес-логику в подкласс управляемого объекта.

Вручную/Нет: выберите Вручную/Нет, чтобы изменить свойства в подклассе управляемого объекта, например, изменить модификаторы доступа и добавить дополнительные удобные методы или бизнес-логику.

Выбрать Manual/Noneи проверьте, существует ли копия xcmodeldata на CopyBundleRecources, убери это.

Ну, в моем случае:

Если вы создадите два файла с одинаковым именем, это вызовет эту ошибку. Удалите тот, который вы недавно добавили, решит эту проблему.

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

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

Ни один из существующих ответов здесь не решил мою проблему. То, что решило проблему для меня, было следующим.

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

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

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

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

"Несколько команд создают '/Users/.../.../.../Frameworks/abcdef.framework"

  1. Эта команда зависит от команды ...: этап сценария ""
  2. Эта команда зависит от команды ...: этап сценария ""

Добавление этой строки в Podfile и выполнение «Pod Install» было ЕДИНСТВЕННЫМ действием, которое сработало.

      install! 'cocoapods', :disable_input_output_paths => true

Я очень надеюсь, что это кому-то поможет. Я часами пытался это исправить и, наконец, понял.

Иногда мне просто хочется, чтобы Xcode был таким же эффективным, как IntelliJ / Android Studio :(

Удачи!

Эта проблема возникла у меня после добавления второй части пакета SDK Fabric в приложение.

На самом деле произошло то, что GoogleUtilies Framework был добавлен в проект Pods дважды.

Это было бы хорошо до Xcode 10, но Xcode 10 будет жаловаться, если файл имеет два действия против него (в этом случае действие копирования).

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

Этот ответ для вас, если вы столкнулись с проблемой в основных данных. Перейдите к yourfilename.xcdatamodeld и убедитесь, что у всех сущностей есть manual / None Codegen.

Шаги:

  1. Перейти к Xcode File
  2. Нажмите, чтобы Настройки рабочего пространства
  3. Система сборки Выберите как устаревшую систему сборки

Моя ошибка была:

дубликат выходного файла

'/Users/home/Library/Developer/Xcode/DerivedData/myAppName-fawptgabysjowicvpeqydjniuovo/Build/Products/Debug-iphoneos/myAppName.app/GoogleMaps.bundle' в задаче: PhaseScriptExecodsution Resources /Ресурсы для библиотек пользователей / Cp] /Developer/Xcode/DerivedData/myAppName-fawptgabysjowicvpeqydjniuovo/Build/Intermediates.noindex/myAppName.build/Debug-iphoneos/myAppName.build/Script-32CCC25BF727B592A1784900

Я сосредоточился на том, что проблемный файлGoogleMaps.bundleи расположение этого файла в[CP] Copy Pods Resources, и тот факт, что он указал, что это дубликатoutput file(Я выделил их черным сверху), это 4-й шаг ниже

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

1- В навигаторе проекта зашел на синий значок проекта

2- Я выбираю этапы сборки

3- В разделе "Фазы сборки" я выбираю[CP] Copy Pods Resources

4- Меньше [CP] Copy Pods Resources я пошел в Output Filesи внизу я нашел файл, заканчивающийся на GoogleMaps.bundle. Я выделил его и нажал на знак минус, чтобы удалить. Убедитесь, что вы перешли вВыходные файлы, а НЕ входные файлы

5- Я сделал чистку shift+cmmd+k а потом, когда я построил проект, ошибка исчезла

Странно было, даже если красная ошибка ушла желтый предупреждающий сигнал был все еще там, но он работал:)

Я новичок в разработке IOS, и я попробовал приведенные выше ответы, но они не сработали для меня.

Моя версия XCode - 12.4, Swift 5

Я получал ошибка при строительстве

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

Итак, я щелкнул правой кнопкой мыши по ошибке и скопировал в буфер обмена, вставил в текстовый редактор.

Показал полную ошибку

Он сказал, какая часть имеет проблему

      Multiple commands produce '/Users/userName/Library/Developer/Xcode/DerivedData/ProjectName-fbeqffupediuiedlrplqjyhgyqna/Build/Products/Production-iphoneos/XCFrameworkIntermediates/GoogleAppMeasurement':
1) That command depends on command in Target 'GoogleAppMeasurement-iOS12.3' (project 'Pods'): script phase “[CP] Copy XCFrameworks”
2) That command depends on command in Target 'GoogleAppMeasurement-iOS14.1' (project 'Pods'): script phase “[CP] Copy XCFrameworks”

(Я использую Google Firebase)

Я был удивлен, увидев, что модули компилируются для двух разных версий iOS (12.3 и 14.1).

Я обнаружил, что в активной целевой конфигурации я установил iOS12.3 в раздел и установите 14,1 дюйма на уровне проекта вкладка

Установка одинаковой требуемой версии, а затем очистка и сборка решили проблему.

Пожалуйста, дайте мне знать, если установка двух разных версий является ошибкой или нет. Если это не ошибка, то что делать, имея в виду следующее:

  • Мне не разрешено устанавливать устаревшую систему сборки
  • не существует в фаза

Поэтому проблема, с которой я столкнулся, заключается в том, что я случайно включил Info.plist в настройки проекта -> Фазы сборки -> Копировать ресурсы комплекта для своей цели.

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

Option 1: Remove all files from

Цель >> Фазы сборки >> Компиляция исходников

Цель >> Этапы сборки >> Копировать ресурсы комплекта

Option 2: Change the build system

Xcode-> Файл-> Настройки проекта-> Система сборки -> Старая система сборки

Option 3: remove and update existing pod

очистка кеша под PromisesObjC
очистка кеша под PromisesSwift
cd [your_project_dir]
rm -rf Стручки /
рм Podfile.lock
обновление стручка

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

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

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

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

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

Другие вопросы по тегам