Ошибка при архивировании реагирует на собственное приложение в Xcode - несколько команд выдают libyoga.a - PullRequest
0 голосов
/ 15 ноября 2018

Я получаю сообщение об ошибке, когда пытаюсь заархивировать свое реагирующее нативное приложение, используя конфигурации выпуска в Xcode - Target 'yoga' (libyoga.a)

error: Multiple commands produce '/Users/mat/Library/Developer/Xcode/DerivedData/ListadoV1-ghytgthpajfllcakinpdoknnalbr/Build/Intermediates.noindex/ArchiveIntermediates/ListadoV1/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/libyoga.a':
1) Target 'yoga' has a command with output '/Users/mat/Library/Developer/Xcode/DerivedData/ListadoV1-ghytgthpajfllcakinpdoknnalbr/Build/Intermediates.noindex/ArchiveIntermediates/ListadoV1/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/libyoga.a'
2) Target 'yoga' has a command with output '/Users/mat/Library/Developer/Xcode/DerivedData/ListadoV1-ghytgthpajfllcakinpdoknnalbr/Build/Intermediates.noindex/ArchiveIntermediates/ListadoV1/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/libyoga.a'

Как решить эту проблему в новой системе сборки?

1 Ответ

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

Если я могу сделать некоторые предположения, вы используете реагирующую натуру (на которую ссылается libyoga), вы используете новую систему сборки из XCode 10+ (не унаследованную систему), и у вас есть интегрированные CocoaPods (вероятно, для использования Firebase или аналогичный).

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

У вас есть три варианта в порядке возрастания усилия и правильности.

Во-первых, вы можете двигаться в этот момент без усилий, просто игнорируя / скрывая проблему, переключая свою сборку на Legacy Build System [1]:

1. In Xcode, go to File->Project/Workspace settings.
2. Change the build system to Legacy Build system.

Во-вторых, вы можете начать работать с новой системой сборки XCode без особых усилий, если добавите обходной фрагмент [2] в свой Podfile, пока проблема не будет устранена в восходящем потоке в реактивных или Cocoapods. Я делаю это сейчас, и мой проект успешно архивирует:

 post_install do |installer|
    installer.pods_project.targets.each do |target|

      # The following is needed to ensure the "archive" step works in XCode.
      # It removes React & Yoga from the Pods project, as it is already included in the main project.
      # Without this, you'd see errors when you archive like:
      # "Multiple commands produce ... libReact.a"
      # "Multiple commands produce ... libyoga.a"

      targets_to_ignore = %w(React yoga)

      if targets_to_ignore.include? target.name
        target.remove_from_project
      end

    end
  end

(тогда, как указывает @ jules-randolph - вы должны запустить pod install в папке iOS, чтобы начать использовать сделанные вами подфайлы)

В-третьих, вы можете выполнить всю работу, чтобы полностью преобразовать ваш проект в Pods, удалив любые оставшиеся ссылки на реагирующие структуры в вашем проекте (в отличие от рабочей области, сконфигурированной Pods). [3]. Я еще этого не сделал, но это правильно, и я закрыл выпуск.

Ссылки, и обратите внимание, что родительская проблема в целом полезна

[1] https://github.com/facebook/react-native/issues/20492#issuecomment-422958184

[2] https://github.com/facebook/react-native/issues/20492#issuecomment-409599358

[3] https://github.com/facebook/react-native/issues/20492#issuecomment-464343895

...