Предупреждение Xcode: "Несколько команд сборки для выходного файла"

Я получаю сообщение об ошибке:

[WARN] Предупреждение: несколько команд сборки для выходного файла /Developer/B/Be/build/Release -iphonesimulator/BB.app/no.png

[WARN] Предупреждение: несколько команд сборки для выходного файла /Developer/B/Be/build/Release -iphonesimulator/BB.app/d.png

[WARN] Предупреждение: несколько команд сборки для выходного файла /Developer/B/Be/build/Release -iphonesimulator/BB.app/n.png

Но я проверил Xcode, и я вообще не вижу дубликатов таких файлов. Поскольку этот пост в списках рассылки Apple, не существует дубликатов.

Ответ 1

На самом деле, ответ на этот вопрос довольно прост.

В вашем проекте XCode найдите файлы, которые вызывают предупреждение, и просто удалите один из них.

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

Теперь соберите проект снова. Предупреждение должно исчезнуть сейчас. (этот ответ для предыдущей версии xcode)

Ответ 2

В Навигаторе проектов выберите файл проекта Xcode. Это покажет вам параметры проекта, а также цели в проекте. Посмотрите в разделе "Копирование ресурсов Bundle Resources". Вы должны найти нарушившие файлы в этом списке дважды. Удалите дублируемую ссылку.

Xcode жалуется, что вы пытаетесь объединить один и тот же файл с вашим приложением два раза.

Ответ 3

Это легко вызвать, когда вы добавляете подпроекты на основе git. Xcode недостаточно умен, чтобы игнорировать подпапку .git, даже если вы не можете видеть ее из finder, поэтому она очень запутается в том, что существует несколько файлов с именем "master" или "exclude", (стандартные git файлы репо). С помощью Xcode4 перейдите в проект (корень левого дерева), затем нажмите на целевое приложение и разверните "Копировать ресурсы Bundle", а затем удалите все ссылки на .git, вы все равно не должны их использовать в своем приложении.

Ответ 4

Это не ошибка Xcode, хотя предупреждающее сообщение недостаточно полезно для описания реальной причины.

Это сообщение об ошибке возникает, если в вашем проекте есть несколько файлов с одинаковым именем. Вам просто нужно удалить или переименовать файлы с повторяющимися именами, и проблема решена.

Ответ 5

Это происходит, если в проекте есть 2 файла с тем же именем. Несмотря на то, что файлы находятся в группах в XCode, когда проект скомпилирован, все файлы попадают в один и тот же каталог. Другими словами, если у вас есть /group 1/image.jpg и/group2/image.jpg, скомпилированный проект будет иметь только один из двух файлов image.jpg.

Ответ 6

Как уже упоминалось, эту проблему можно увидеть, если у вас несколько файлов с тем же именем, но в разных группах (желтые папки) в навигаторе проекта. В моем случае это было преднамеренно, поскольку у меня было несколько подкаталогов с "preview.jpg", которые я хотел скопировать в пакет приложений:

group references

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

Удалите оскорбительные файлы и выберите "Удалить ссылку" (поэтому мы не удаляем их полностью):

remove group references


Повторно добавьте их в проект, перетащив их обратно в навигатор проекта. В появившемся диалоговом окне выберите "Создать ссылки на папки для любых добавленных папок":

add as folder references


Обратите внимание, что файлы теперь имеют значок синей папки в навигаторе проекта:

folder references


Если вы теперь смотрите в разделе "Ресурсы копирования ресурсов" на этапах целевой сборки, вы заметите, что для всей папки есть одна запись, а не записи для каждого элемента, содержащегося в каталоге. Компилятор не будет жаловаться на несколько команд сборки для этих файлов.

Ответ 7

Это не ошибка. Помощь Xcode может помочь вам. Выберите цель, слева в Навигаторе проекта. Нажмите "Проверить настройки" внизу настроек. Xcode проверит настройки и удалит дубликаты, если это возможно.

Ответ 8

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

чтобы исправить это...

  • перейти к целевому проекту.
  • выберите Build Phases
  • выберите фазу сборки Headers
  • введите имя, указанное в предупреждении
  • обратите внимание на два (или более) элемента
  • найдите +|- в нижнем левом углу
  • выберите один из элементов и нажмите кнопку -

Ответ 9

В моем случае проблема была вызвана тем же именем цели и папки внутри группы.

Просто переименуйте конфликтующий файл или папку, чтобы решить проблему.

Ответ 10

Я нашел довольно простое решение для этого:

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

Предупреждение исчезло! Проверьте это изображение для справки.

enter image description here

Ответ 11

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

Это случается, если вы одновременно добавляете в проект несколько зависимых от языка файлов. Я нашел это, просмотрев различия git. Я ничего не сделал в коммите, но добавил новые локализованные файлы nib. Но, оглядываясь на разницу в файле project.pbxproj, он показал кучу новых дублированных ссылок, добавленных для файлов, которые уже были в проекте раньше. Файлы, которые он сделал, тоже казались случайными для меня.

Я повторял это одно и то же поведение несколько раз.

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

Xcode 4 - просто огромное разочарование для меня.

Ответ 12

Это происходит потому, что ur "no.png" "d.png" и "n.png" дублируются в ресурсах. Просто найдите удаление дублированных файлов и удалите.

Ответ 13

Кажется, что ошибка появляется, когда у вас имеется более одной ссылки того же файла. У меня было 2 файла с тем же именем и эта ошибка. Когда я удаляю один из них, ошибка исчезает.

Ответ 14

Еще один вариант этой проблемы. У меня было такое же сообщение, что ни одно из ранее предложенных решений не решило проблему (у меня определенно была только одна копия файла-нарушителя).

Моим решением было отредактировать файл project.pbxproj в текстовом редакторе (после выхода из XCode и резервного копирования файла, конечно) и удалить все ссылки на файл-нарушитель. Затем, снова запустив XCode, я вручную добавил файл обратно в проект, и все было в порядке.

(Мое подозрение, что эта проблема возникла из-за руководства, то есть: не-XCode, слияние файла проекта.)

Ответ 15

Откройте папку Frameworks в своем проекте и убедитесь, что внутри нее есть только фреймворки. Я добавил по ошибке всю папку разработчика!

Ответ 16

У меня была такая же проблема минут назад. Я упомянул об изменении цели развертывания, исправил мою проблему.

Ответ 17

Для меня Target > Build Settings > Packaging > Product Name был настроен на то же, что и другое значение, указанное в файле .plist, который был обычным для моего приложения. В результате из-за нашего процесса сборки это создает повторяющиеся файлы.

Ответ 18

Swift 3: (но также и более старые версии) это происходит, когда у меня есть активы с дубликатами. Просто переименуйте файлы с этой проблемой, и все идет хорошо.

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

Ответ 19

Одним из простых способов является,

  • Перейти к цели приложения
  • Перейти к этапам сборки
  • Выходные файлы
  • Удалите путь из выходных файлов, затем соберите проект. Это будет работать успешно.

Ответ 20

Ключ должен был сделать pod deintegrate и файл rm *.workspace ! Что за трата времени !

Ответ 21

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

  1. Перетащите репо в корзину.
  2. повторно клонировать ваш репо.
  3. настройте репо с правильным удаленным отслеживанием. git remote add <url.git> или git remote set-url <url.git>