Xcode 10 Ошибка: несколько команд

659

ошибка: несколько команд создают '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist': 1) команда Target имеет копию объекта Optimal '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist' в '/ Users / uesr / Библиотека / Разработчик / Xcode / DerivedData / OptimalLive-fxatvygbofczeyhjsawtebkimvwx / Build / IPhone / Products / Debug .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 есть ошибка.

делать
источник
Для cocoapods управляемых зависимостей см stackoverflow.com/a/52421345/334999
Шуо
происходит, когда вы импортируете сторонний фреймворк в свой проект и в его исходных файлах есть info.plist. Этот info.plist конфликтует с вашим приложением. Просто удалите его из этапов сборки
protspace
Уважаемый читатель, прочитайте КАЖДЫЙ ответ на этот вопрос, есть много разных вещей, которые могут быть не правы.
iluvcapra
Перейти к пути "Build Phases-> Copy Bundle Resources". Проверьте имя файла и удалите его. Очистить и запустить приложение
Сагар Сукоде

Ответы:

1228

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

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

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

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

Alok
источник
12
Вам также может понадобиться искать в любых зависимостях, например, CocoaPods, ошибочно добавленные файлы info.plist
Chris Paveglio
68
Для уточнения: эта ошибка происходит потому, что новая система сборки Xcode 10 лучше справляется с проблемами конфигурации проекта. Подобные проблемы могут иногда вызывать незначительные проблемы с вашей сборкой, поэтому их хорошо исправлять.
Рик Баллард
2
В моем случае мне пришлось удалить некоторые файлы локализации с именем InfoPlist.strings
neowinston
8
В моем случае у меня был info.plistфайл в одной из моих личных зависимостей CocoaPods, который собирался, потому что он соответствовал свойству podspec source_files. Мне не нужен info.plistфайл в моем модуле, поэтому я просто удалил его.
апреля
3
Спасибо! Некоторое время назад я добавил несколько плагинов для разработчиков в свой код, и в нем также был файл info.plist, который конфликтовал с info.plist моего приложения
Christopher Smit
567

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

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

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

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

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

Акшай Сандервани
источник
4
Можете ли вы объяснить, почему возникает эта проблема, а также как ее решает с помощью Legacy Build System? @Akshay Sunderwani
user832
142
Вы не решаете проблему, вы просто скрываете их.
Caio
4
Исправляет ошибку сборки для реактивных проектов. Смотрите проблему здесь: github.com/facebook/react-native/issues/20492 Существует возможное исправление, если вы не хотите переключаться на устаревшую систему сборки: github.com/facebook/react-native/issues/…
Евгений Тимм
6
Это не долгосрочное исправление. В конце концов устаревшая система сборки больше не будет вариантом.
Пол Кинг
6
Ну, я на 100% собираюсь скрыть проблему вместо того, чтобы ее исправить, потому что ни одно из этих решений не работает. Кажется, известная проблема с Cocoapods; см. github.com/CocoaPods/CocoaPods/issues/7949 . Я надеюсь, что к тому времени этот обходной путь больше не будет исправлен.
Судо
170

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

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

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

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

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

Hardik1344
источник
Насколько я понимаю, наши существующие проекты сделаны в старых swift и xcode, которые поддерживаются старой версией swift и xcode. Итак, ранее, что мы сделали, мы пошли на «Bundle Settings-> Swift legacy Build System» и выбрали более раннюю версию.
Hardik1344,
Первоначально он был у меня в «Swift Legacy Build System», но он был переключен после перезагрузки компьютера. Даже если вы считаете, что этот набор настроен правильно, все равно стоит проверить его еще раз.
EndersJeesh
Это решение не решает проблему, оно просто скрывает ее.
Аргус
Также убедитесь, что вы изменили настройки рабочего пространства для
Вэй Шен
114

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

Хари Прасат Балахандран
источник
38
В этом случае Xcode помечает проблему в проекте, поэтому возврат к устаревшей системе сборки пока просто скрывает это. Сообщение Xcode о подобных проблемах является преднамеренным, и лучше всего решить проблему.
Рик Баллард
2
Если ошибка в сгенерированном проекте CocoaPods, то я отключаю новую систему сборки, пока новая версия CocoaPods не исправит проблему.
Ривера
@RickBallard теперь имеет смысл, что может быть правильным решением? кажется, что есть смесь ответов
Роландо
1
Существует множество причин такого рода ошибок, но вы можете прочитать больше о том, что это значит, по адресу help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0
Рик Баллард,
75

Если вы получаете это из Dittoкоманды, создающей несколько экземпляров с одним и тем же именем (НЕ the '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

u2Fan
источник
1
Он работал немного хорошо, но потом сломался с файлом моста.
Мохамад Каакати
5
В моем случае мне пришлось выбрать Allсправа от того места, где вы ищите, Product Module Nameчтобы показать эту конфигурацию сборки.
Ходсон,
56
У меня та же проблема в Xcode 10. Тот же проект работал нормально в Xcode 9.4.1. Так что решение очень простое. Просто удалите все файлы info.plist из цели. Пожалуйста, сделайте это для всех файлов info.plist. Шаг 1. Выберите файл info.plist. 2. В Инспекторе файлов снимите флажок с проекта в Целевом членстве. Затем запустите свой проект. Спасибо !
Ан Кит
12
Для меня я должен был пойти в [Project_Name]> Фазы сборки> Копировать ресурсы Bundle и удалить там дубликаты
user3322509
5
@Bharath Не удаляйте файлы info.plist из своего проекта. Вы должны удалить только из цели, как я уже говорил. Мы не можем удалить info.plist, это очень важно для проекта.
Комплект
69

Я экспериментировал с 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. Убедитесь, что модель данных включена в список «Копировать ресурсы комплекта». Добавьте его, если он отсутствует.

РЕДАКТИРОВАТЬ

Как @WilliamT. объясняет в комментариях, вам нужен xcdatamodeld в списке компиляции. Вместо этого перейдите к своим сущностям в файле xcdatamodeld. Выберите модели с ошибками, разверните левую панель и измените поле «Codegen» на «Manual / None».

Позитрон
источник
36
Файл xcdatamodeld должен находиться в источниках компиляции. Если вы видите эту ошибку в отношении Базовых Данных, это скорее всего потому, что вы вызвали «Создать NSManagedObject Subclass», но ваш Entity установлен в Codegen = «Определение класса». Это означает, что он автоматически создает эти классы для вас, и вы создали их вручную, чтобы они существовали дважды.
Уильям Т.
1
Вы спасатель
user578386
1
@WilliamT. Итак, каково должно быть значение Codegen, если вы вызываете Create NSManaged Object Subclass?
Каунтея
2
@Kaunteya Для каждого атрибута CoreData (таблица) есть возможность установить Codegen на «Manual»
Уильям Т.
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.
AndrewSas
источник
32
Файл info.plist отсутствует в ресурсах комплекта копий, но по-прежнему возникает та же ошибка
bunty kumar
Удаление избыточного Info.plist из фазы сборки ресурсов комплекта копий решило это для меня. Тем не менее, мое предупреждение было другим, потому что случайно Info.plist другой цели, но в том же проекте был добавлен в фазу сборки Copy Bundle Resources. Предупреждение было: «предупреждение: дубликат выходного файла '... MyApp.app/Info.plist' для задачи: ProcessInfoPlistFile». И приводит к той же ошибке, что и в первоначальном вопросе: «ошибка: несколько команд выдают« ... MyApp.app/Info.plist »».
Мартин Полак,
в моем случае это был «ЛИЦЕНЗИЯ» файл - как только я удалил его, проблема была решена, так что я думаю , эта проблема является более общей , чем «PLIST», только , кажется, просто чаще встречается
виры нас
37

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

pod deintegrate

pod install

Мин чу
источник
Да, моя проблема была вызвана пакетом pod, и только это решило проблему! спасибо
CodeBrew
@ Мин Чу Спасибо
N. Der
30

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

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

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

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

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

Джерри Кринок
источник
это сработало для меня. ты восхитителен!
Сружан Симха
Хороший ответ. Просто хочу добавить, что вы можете очистить дубликаты скрытых файлов, используя «Product> Clean Build Folder» после исправления Codegen в Manual / None, взятый из комментария отсюда .
несомненно
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
Помогло копирование файлов + удаление ресурсов Bundle.
Александр
Это сработало для меня с небольшой модификацией - в моем случае на шаге копирования файлов было несколько файлов, так или иначе, одни и те же имена файлов копировались в пакет несколько раз / дважды, что приводило к ошибке: удаление одной строки требует от вас выделения строки / Отфильтруйте имя, указанное в сообщении об ошибке, и удалите одну строку со знаком минус (она всегда находится в нижней строке) вместо удаления всего шага копирования файлов.
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

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

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

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

Palmi
источник
1
Я использовал стручки. Удаление всего из Embed Frameworks сработало. Я чищу и перестраиваю без ошибок. Устаревшее решение также работает, но не решает проблему под рукой (для тех, кто читает это). Я на xcode 10.2, cocoapods-1.6.1.
Надин Роуз
1
Я использую Карфаген, и это исправило это для меня!
Девин Б.
Я также использовал CocoaPods. Framework связан как модуль разработки. «Вставить рамки» пусто и до сих пор есть эта проблема
Лютен
11

шаги:

  1. Перейти к Xcode File
  2. Нажмите, чтобы Настройки рабочего пространства
  3. Система сборки Выберите как устаревшую систему сборки
Санджай Мали
источник
4
В этом случае Xcode помечает проблему в проекте, поэтому возврат к устаревшей системе сборки пока просто скрывает это. Сообщение Xcode о подобных проблемах является преднамеренным, и лучше всего решить проблему. Для получения дополнительной информации см. Help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Рик Баллард
Это работает для меня. Изменение названия продукта не Поскольку мой продукт смешан с наполовину объективным кодом c и быстрым кодом. Моя проблема: «Несколько команд создают быстрый модуль»
wzhang84
10

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

Option 1: Remove all files from

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

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

Option 2: Change the build system

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

Option 3: remove and update existing pod

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

I hope this will help you, Happy coding :-)
Шоаиб Багван
источник
-1. Нет, это не работает "наверняка". Какой смысл удалять исходники компиляции и ресурсы комплекта копий ?! Проект не будет работать без компиляции кода и ресурсов.
Лютен
9

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

Остин
источник
Это было именно то решение для меня тоже, так как эта ошибка произошла при попытке запустить tflite_camera_example в Xcode 10
zai chang
9

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

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

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

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

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

Дамо
источник
То же самое для меня, но используя Карфаген, перетаскивая все .frameworks в раздел проекта библиотеки
Роналду Альбертини
Вы исправили это @Damo
Harikarthick K
Я сталкиваюсь с этой проблемой, не могли бы вы сказать мне, как это исправить, не меняя наследие
Харикартик К
9

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

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

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

Гаджендра К Чаухан
источник
этот ответ также следует рассматривать как решение в случае, если (пользовательский) модуль вызывает проблему!
MkaysWork
Также вы можете удалить любые файлы * .plist отсюда. Кажется, работает для пользовательских стручков.
Амит Ахире
8

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

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

Уилл Гво
источник
У меня была эта ошибка, потому что у меня была цель наблюдения с собственным файлом infoplist.strings, который копировался в тот же каталог, что и файл infoplist.strings основного приложения. Они оба окажутся в одном месте при строительстве.
Lyck
7

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

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

Чарли Фиш
источник
7

Я использовал Carthage и Xcode 10.

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

Удалите фреймворки, добавленные вместе с Carthage, из «Embedded Binaries»

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

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

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

Raegtime
источник
7

Стоит отметить, что эта ошибка может появиться после автоматической генерации моделей CoreData, где Codegen не установлен на Manual / None.

Чтобы исправить это в Xcode 10, дважды щелкните файл xcdatamodeId, выберите каждую из ваших сущностей и установите для Codegen значение Manual / None в поле Class в вашем инспекторе моделей данных.

Аурелия W
источник
Да! А также сделайте «Чистую папку сборки».
Дирк
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.

Noor
источник
2
В этом случае Xcode помечает проблему в проекте, поэтому возврат к устаревшей системе сборки пока просто скрывает это. Сообщение Xcode о подобных проблемах является преднамеренным, и лучше всего решить проблему. Для получения дополнительной информации см. Help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Рик Баллард
этот сделал это для меня, вы, сэр, гениальны
Самурай
6

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

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

Адитья Шарма
источник
6

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

Я полагаю, что это мог быть LivePerson SDK

ninjaneer
источник
для меня я просто должен был сделать «установку pod»
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'

Для избавления от этой проблемы может быть 2 разных решения:

Решение 1

Как мы видим, я получаю ту же ошибку .. в моем случае была дополнительная копия папки Chat21Core в TildeskWidget папки ..выполняется создавали вопрос .. Так что одно из возможных решений может быть также просто прочитать ошибку целиком и попытайтесь найти, есть ли какая-либо дополнительная копия, на которую ссылаются из проекта или нет.

Решение 2

Еще одно простое решение, которое я нашел, когда столкнулся с проблемой одного типа для другого проекта. На этот раз мне пришлось применить другое решение.

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

Надеюсь, это может сработать для вас ..

Кунш Технологии
источник