Xcode 10 Ошибка: несколько команд - PullRequest
0 голосов
/ 06 июня 2018
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.

Ответы [ 57 ]

0 голосов
/ 21 сентября 2018

Мой ProjectName.xcodeproj имел действительную и недействительную ссылку на файл с таким же именем.То же имя файла в навигаторе проекта, одно имя было красным, другое нормально.Я избавился от недействительной ссылки (красный), проблема решена.

0 голосов
/ 06 января 2019

Если вы получаете эту ошибку с React Native, в частности с libyoga.a, проверьте this Github comment

0 голосов
/ 21 сентября 2018

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

0 голосов
/ 24 января 2019

В моем случае ошибка сборки архива против Xcode10

-1: несколько команд выдают '/Users/kk/Library/Developer/Xcode/DerivedData/react_carday_app-hjahojxsbvmmiyaklrhhuqljdfwv/Buildnoinxx)/ArchiveIntermediates/react_carday_app/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/libyoga.a ': 1) У целевой "йоги" есть команда с выводом "/Users/kk/Library/Developer/Xcode/DerivedData/react_cardayjakxhohoxwhovx_jv.jp.jpg.jp.jpg.jp.jpg.jp.jp.jp.jp.jp.jp.jp.jpg_ru_dj_d_v_jj_d_jj_d_jj_t_tj_v_tj/ArchiveIntermediates/react_carday_app/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/libyoga.a '2) У целевой' йоги 'есть команда с выводом' /Users/kk/Library/Developer/Xcode/DerivedData/react_carday_akinjxxxxxx_xx_xl_m_jx_x_xx_htmlArchiveIntermediates / Reaction_carday_app / IntermediateBuildFilesPath / UninstalledProducts / iphoneos / libyoga.a '

В вашем Podfile должно быть что-то вроде ниже

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == "React"
      target.remove_from_project
    end

    if target.name == "yoga"
      target.remove_from_project
    end
  end
end

, а затем запустить pod install

0 голосов
/ 22 сентября 2018

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

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

0 голосов
/ 23 сентября 2018

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

pod deintegrate

pod install

0 голосов
/ 12 марта 2019

На самом деле вы можете использовать устаревшую систему сборки, но вы не получите быстрое время сборки, т. Е.) Вы не получите новых функций систем сборки, которые были установлены по умолчанию в XCode10 Это просто обходной путь для получения последней версииособенности сборки https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes/build_system_release_notes_for_xcode_10

0 голосов
/ 24 сентября 2018

В моем случае (я использую Карфаген) проблема с

error: Multiple commands produce 
1) Target *** has copy command from
2) That command depends on command in Target ***: script phase “Run Carthage Script” 

была вызвана из-за импорта каркасов как в Встроенные каркасы , так и Запуск скрипта карфагена фазы в Фазы сборки конфигурация

Эти 2 фазы копируют структуры в извлеченные данные, поэтому Xcode видит дублированные файлы и распечатывает эти ошибки с предупреждением:

ignoring duplicated output file: (in target ***)

После удаления дублированных фреймворков из Внедренный фреймворк * На этапе 1017 * s все работает правильно.

0 голосов
/ 02 апреля 2019

Прочтите этот ответ, если сообщение об ошибке ссылается на файлы базовых данных

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

<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's DerivedData.Этот файл автоматически генерируется Xcode во время каждой сборки , если файл модели данных (.xcdatamodeld) включен в целевую фазу сборки Compile Sources .Эта функция была добавлена ​​в 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 для модели данных столько одна настройка:

  • Открыть задачу Фазы сборки Навигатор проектов , выбрать проект, затем в списке TARGETS появляется, выберите цель проблемы, затем вкладку Фазы сборки ).
  • Разверните запись Компилировать источники и найдите модель данных проблемы (файл .xcdatamodeld).
  • Удалите его из списка компиляции
  • Убедитесь, что модель данных включена в список Ресурсы комплекта копирования .

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

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

  • Оставьте вашу модель данных такой, какая есть в Компиляции источников .
  • В каждомEntity Inspector в вашей модели данных установите Codegen на Определение класса .
  • В Project Navigator удалите и удалите все файлы 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 на Категория / расширение .
  • В Навигаторе проектов удалите и удалите все файлы Foo + CoreDataClass.m или .swift и, чтобы избежать путаницы в будущемпереименуйте любые Foo + CoreDataProperties.m или .swift файлы, например, Foo.m или .swift .
  • Убедитесь, что каждый файл Foo.m или .swift содержит определение класса, к которому вы можете добавить свои собственные неуправляемые свойства.

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

...