React-native: Ошибка "Несколько команд создают" при сборке с новой системой сборки Xcode

Созданный на 1 авг. 2018  ·  69Комментарии  ·  Источник: facebook/react-native

Здравствуйте,

Окружающая обстановка:

React Native Environment Info:
    System OS: macOS High Sierra 10.13.6
    Binaries:
      Node: 8.11.3 - /usr/local/bin/node
      npm: 5.6.0 - /usr/local/bin/npm
    IDEs:
      Xcode: 10 Beta 3
    npmPackages:
      react: 16.4.1
      react-native: 0.56.0

Ошибка:

При попытке собрать простое приложение RN 0.56 я получил следующую ошибку:

warning: Skipping duplicate build file in Compile Sources build phase: <PATH_TO_PROJECT>/node_modules/react-native/React/Modules/RCTRedBoxExtraDataViewController.m (in target 'React-tvOS')
...
warning: duplicate output file '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTResizeMode.h' on task: PBXCp <PATH_TO_PROJECT>/node_modules/react-native/Libraries/Image/RCTResizeMode.h <HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTResizeMode.h (in target 'React')
...
error: Multiple commands produce '<PbxCp <HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTScrollableProtocol.h>':
1) Target 'React-tvOS' has copy command from '<PATH_TO_PROJECT>/node_modules/react-native/React/Views/ScrollView/RCTScrollableProtocol.h' to '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTScrollableProtocol.h'
2) Target 'React' has copy command from '<PATH_TO_PROJECT>/node_modules/react-native/React/Views/ScrollView/RCTScrollableProtocol.h' to '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/React/RCTScrollableProtocol.h'
error: Multiple commands produce '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/double-conversion/fast-dtoa.h':
1) Target 'double-conversion-tvOS' has copy command from '<PATH_TO_PROJECT>/node_modules/react-native/third-party/double-conversion-1.1.5/src/fast-dtoa.h' to '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/double-conversion/fast-dtoa.h'
2) Target 'double-conversion' has copy command from '<PATH_TO_PROJECT>/node_modules/react-native/third-party/double-conversion-1.1.5/src/fast-dtoa.h' to '<HOME>/Library/Developer/Xcode/DerivedData/ReactNativeSimple-dpupkkuvhsslwxgngxzqgwsrazap/Build/Intermediates.noindex/ArchiveIntermediates/ReactNativeSimple/BuildProductsPath/Release-iphoneos/include/double-conversion/fast-dtoa.h'
...

Шаги воспроизведения:

  • реагировать-native init
  • xcodebuild -project <PATH_TO_PROJECT>/ios/ReactNativeSimple.xcodeproj -scheme ReactNativeSimple archive -sdk iphoneos -archivePath <PATH_TO_PROJECT>/output/build/archive/ReactNativeSimple CODE_SIGN_STYLE=Automatic

Детали:

Я тестировал его на простом приложении RN, созданном командой " react-native init ".
Когда я пытаюсь создать приложение с использованием графического интерфейса Xcode 10, оно успешно создается.
Но я пытаюсь построить его с помощью команды xcodebuild - не удалось с указанной выше ошибкой.

Когда мы используем одну и ту же команду в одном приложении (RN 0.56) в Xcode 9.4.1 - оно успешно строится
Если я не укажу параметр -sdk в команде xcodebuild, он будет успешно построен.
Примечание: _Ошибки могут быть разными для разных бета-версий Xcode 10._

Вопросов:

Поддерживает ли RN 0.56 бета-версию Xcode 10?
Как я могу это исправить?
Есть ли обходной путь для его создания с использованием Xcode 10 Beta?

Bug iOS Locked

Самый полезный комментарий

Вы можете попробовать изменить систему сборки на Legacy,
Файл> Настройки рабочего пространства> Система сборки> Устаревшая система сборки.

Все 69 Комментарий

Вы можете попробовать изменить систему сборки на Legacy,
Файл> Настройки рабочего пространства> Система сборки> Устаревшая система сборки.

Мы хотим использовать новую систему сборки.

Следует поддерживать новую систему сборки. Мы отслеживаем любые проблемы, с которыми люди сталкиваются с Xcode 10 или новой системой сборки в этой задаче: https://github.com/facebook/react-native/issues/19573

На первый взгляд, похоже, что ваша проблема не связана с тем, что мы исправили на master. Добавлю в список.

У меня также была ошибка Multiple commands produce с libReact.a & libyoga.a .
Я использую:

  • Xcode 10
  • реагировать-родной 0.57.0
  • Какао-стручки

Чтобы преодолеть это, я добавил это в свой Podfile :

  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

Затем перестройте проект Pods с помощью:

$ pod install

Полная информация о среде:


  React Native Environment Info:
    System:
      OS: macOS High Sierra 10.13.6
      CPU: x64 Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
      Memory: 4.10 GB / 32.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 10.9.0 - ~/.nvm/versions/node/v10.9.0/bin/node
      Yarn: 1.9.4 - /usr/local/bin/yarn
      npm: 6.4.1 - ~/.nvm/versions/node/v10.9.0/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.0, macOS 10.14, tvOS 12.0, watchOS 5.0
    IDEs:
      Xcode: 10.0/10A255 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.5.0 => 16.5.0
      react-native: 0.57.0 => 0.57.0
    npmGlobalPackages:
      create-react-native-app: 1.0.0
      react-native-cli: 2.0.1

Подтверждено, что обходной путь Pods тоже должно работать, как я делал с React, который также вызывал ошибки сборки дублирующих целей, до RN 0.57.

Если вы используете xcodebuild , добавьте это -UseModernBuildSystem=NO чтобы выбрать старую устаревшую систему сборки.

@PaulMest Спасибо, я сделал свой день

Надеюсь, моя ситуация поможет вам решить проблему!

Вот полный вывод:

:-1: Multiple commands produce '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Roboto.ttf':
1) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/native-base/Fonts/Roboto.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Roboto.ttf'
2) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/src/Resources/Fonts/Roboto.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Roboto.ttf'

:-1: Multiple commands produce '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Zocial.ttf':
1) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/native-base/Fonts/Zocial.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Zocial.ttf'
2) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/react-native-vector-icons/Fonts/Zocial.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Zocial.ttf'

:-1: Multiple commands produce '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Ionicons.ttf':
1) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/native-base/Fonts/Ionicons.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Ionicons.ttf'
2) Target 'zonder' (project 'zonder') has copy command from '/Users/ntomallen/source/zonder-mobile-app/node_modules/react-native-vector-icons/Fonts/Ionicons.ttf' to '/Users/ntomallen/Library/Developer/Xcode/DerivedData/zonder-bkcoqubqbalyhffxhurxhkuivvms/Build/Products/Debug-iphonesimulator/zonder.app/Ionicons.ttf'

По сути, react-native-vector-icons и native-base объединяют одни и те же файлы шрифтов. (И по какой-то причине у нас также есть один из них в комплекте; я обязательно удалю его.) Перед обновлением до Xcode 10 / Mojave проблем не было. Единственное изменение заключалось в обновлении с Xcode 9 до Xcode 10.

@ntomallen Я столкнулся с той же проблемой с дублирующимися шрифтами из react-native-vector-icons и native-base и в итоге я удалил дубликат из раздела Copy Resources To Bundle моего целевого приложения. После этого мой проект снова заработал (ну, он перешел к двум различным ошибкам, которые описаны здесь: несколько команд выдают ошибку с libReact.a и libyoga.a. - исправить

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

_Отказ от ответственности: я не опытный разработчик iOS и взламывал эти решения вместе. Я не знаю, напутал ли я что-то, о чем не знаю.

Именно это сработало и для меня! Хотя мне все еще любопытно, почему это внезапно ошибка сейчас, а не раньше.
26 сентября 2018 г., 14:49 -0400, Нильс Бокманс [email protected] написал:

@ntomallen Я столкнулся с той же проблемой с дублированными шрифтами из response-native-vector-icons и native-base, и в итоге я удалил дубликат из раздела Copy Resources To Bundle моего целевого приложения. После этого мой проект снова заработал (ну, он перешел к двум различным ошибкам, которые описаны здесь: libfishhook.a не может быть найден - исправить и несколько команд выдают ошибку с libReact.a и libyoga.a. - исправить
Пока что мое приложение работает нормально, и я могу скомпилировать с использованием новой системы сборки XCode 10.
Отказ от ответственности: я не опытный разработчик iOS и взламывал эти решения вместе. Я не знаю, напутал ли я что-то, о чем не знаю.
-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub или отключите обсуждение.

@ntomallen В основном это потому, что существует новая, «более строгая» система сборки, и XCode 10 использует ее по умолчанию, тогда как в XCode 9 вам приходилось активно использовать ее, а не «устаревшую» систему сборки, которую мы все использовали до настоящего времени.

Хорошо. Это сводит с ума. Я перешел на устаревшую систему сборки. Теперь у меня другая ошибка.

/Users/michaelstelly/Documents/projects/mobile_gtm/node_modules/react-native/React/../third-party/glog-0.3.4/src/base/mutex.h:105:10: fatal error: 'config.h' file not found
#include "config.h"           // to figure out pthreads support

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

@mjstelly ты на 0.57? В вашем сообщении об ошибке упоминается glog-0.3.4 но в 0.57 используется glog-0.3.5 . Я просто хочу убедиться, что мы отслеживаем проблемы с последней версией.

@PaulMest мой герой! Спасибо!

Привет @mjstelly

Вы сталкиваетесь с аналогичной проблемой со сторонним поставщиком .....
я использую xcode 10

  1. В файле, включенном из /Users/ehs-mobile-app/node_modules/react-native/third-party/folly-2016.09.26.00/folly/json. cpp: 17

Xcode 10.1, похоже, отлично работает в обеих системах, но я не могу архивировать ни на одной из них, многие ошибки сборки. Что делать сейчас?

Вы должны быть более конкретными. Сборки и архивы Xcode 10 подходят мне (после решения некоторых ошибок, которые я сейчас не помню), на MacOS 10.12.6 и RN 0.57.0.

Мой подфайл post_install выглядел так:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == 'react-native-google-maps'
      target.build_configurations.each do |config|
        config.build_settings['CLANG_ENABLE_MODULES'] = 'No'
      end
    end
    if target.name == "React"
      target.remove_from_project
    end
    if target.name == 'yoga'
      target.remove_from_project
      target.build_configurations.each do |config|
          config.build_settings['GCC_TREAT_WARNINGS_AS_ERRORS'] = 'NO'
          config.build_settings['GCC_WARN_64_TO_32_BIT_CONVERSION'] = 'NO'
      end
    end
  end
end

Следуя предложению @PaulMest, у меня сработало.

@njbmartin Спасибо!
только твое исправление сработало для меня

-UseModernBuildSystem = NO

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

Переход на устаревшую систему сборки исправляет множество ошибок сборки, но нам действительно нужно иметь возможность использовать современную систему в будущем: p

Также поздравляю с Днем благодарения всех, кто празднует!

да, новая версия конечно хорошая, но не такая уж и гладкая.
Обновляйте с риском.

@PaulMest Спасибо. Ваш хак работает :)

Подтверждено, что обходной путь Pods тоже должно работать, как я делал с React, который также вызывал ошибки сборки дублирующих целей, до RN 0.57.

Как это сделать именно @fungilation ?

Это единственный известный блокировщик, оставшийся в # 19573. Люди все еще сталкиваются с этой проблемой в версии 0.57.8?

У меня нет проблем с Xcode с версии 0.57.8

@hramos К сожалению, нет. Для меня вариант сборки Xcode legacy по-прежнему требуется с 0.57.8, а также с новым 0.58.0-rc.3 (редактировать: также с 0.58.3).

Чтобы сделать это воспроизводимым, я создаю новый проект и тестирую его локально и с помощью travis CI. Я связал исходный проект ниже (но он только что создан с помощью response-native init) и успешные и неработающие сборки на travis. Может это поможет? По крайней мере, я мог бы и буду повторять этот эксперимент, когда будет доступна новая версия.

@hramos Я сталкиваюсь с этим, когда запускаю сборку с детоксом , а не с yarn ios . Вот моя конфигурация для моего симулятора iOS:

{
    "configurations": {
        "ios.sim.debug": {
            "binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/reactipay.app",
            "build": "xcodebuild -project ios/reactipay.xcodeproj -scheme reactipay -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
            "type": "ios.simulator",
            "name": "iPhone 6"
        },
        "android.emu.debug": {
            "binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
            "build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..",
            "type": "android.emulator",
            "name": "emulator-5554"
        }
    },
    "test-runner": "jest"
}

В частности, если я запустил это: xcodebuild -project ios/reactipay.xcodeproj -scheme reactipay -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build он завершится с исходной ошибкой.

У меня также была ошибка Multiple commands produce с libReact.a & libyoga.a .
Я использую:

  • Xcode 10
  • реагировать-родной 0.57.0
  • Какао-стручки

Чтобы преодолеть это, я добавил это в свой Podfile :

  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

Затем перестройте проект Pods с помощью:

$ pod install

Полная информация о среде:

спасибо человек!

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

detox build -c ios.sim.releas ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release ||
 detox build -c ios.sim.release

где детокс билд

xcodebuild -project ios/deliverypoc.xcodeproj -scheme deliverypoc -configuration Release -sdk iphonesimulator -derivedDataPath ios/build

Я не могу использовать устаревшую систему сборки, так как она зависает при сборке реакции, и я не использую Cocoa Pods.
Какие еще могут быть решения?
Должен ли я перенести iOS на Какао? Какие последствия это принесет?

@ pavlof01 Я специально ищу сообщения о том, что это все еще происходит в версиях 0.57.8 или новее.

@hramos У меня все еще есть это в Xcode 10.1 на 0.57.8 и 0.58.3. Я не пробовал запускать с использованием устаревшей системы сборки (это официальное исправление на данный момент?) - вместо этого я использую Podfile для target.remove_from_project когда name == "React" или name == "yoga" . Я также не пробовал Xcode 9 и т.д., как @jerolimov выше.

Для нас это не проблема блокировки, просто я бы вмешался! Lmk, если я могу предоставить дополнительную полезную информацию.

Обратите внимание, когда я сказал, что у меня больше нет проблем с RN 0.57.8, я также использую этот обходной путь в Podfile:

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

    targets_to_ignore = %w(React yoga)

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

  end
end

Забыл об этом 😛

@hramos Я использую 0.57.8 (та же ошибка) - дайте мне знать, если вам понадобится дополнительная информация.

Я столкнулся с этим и с детоксом. Я исправил это, указав место назначения в xcodebuild вместо sdk: -destination 'platform=iOS Simulator,name=iPhone 7'

Могу подтвердить, что это происходит на 0.58.3 на этапе архивирования. Добавление обходного пути remove_from_project в мой подфайл решает эту проблему. Вывод react-native info :

$ $(npm bin)/react-native info

  React Native Environment Info:
    System:
      OS: macOS 10.14
      CPU: (4) x64 Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
      Memory: 1.13 GB / 8.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 11.0.0 - /usr/local/bin/node
      Yarn: 1.10.1 - /usr/local/bin/yarn
      npm: 6.4.1 - /usr/local/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.1, macOS 10.14, tvOS 12.1, watchOS 5.1
      Android SDK:
        API Levels: 19, 21, 22, 23, 24, 25, 26, 27, 28
        Build Tools: 23.0.1, 25.0.0, 25.0.2, 26.0.1, 26.0.3, 27.0.3, 28.0.1, 28.0.2, 28.0.3
        System Images: android-19 | Google APIs Intel x86 Atom, android-21 | Google APIs Intel x86 Atom_64, android-22 | Google APIs Intel x86 Atom_64, android-23 | Google APIs Intel x86 Atom_64, android-24 | Google APIs Intel x86 Atom_64, android-24 | Google Play Intel x86 Atom, android-25 | Google APIs Intel x86 Atom, android-25 | Google APIs Intel x86 Atom_64, android-25 | Google Play Intel x86 Atom, android-26 | Google APIs Intel x86 Atom_64, android-27 | Google APIs Intel x86 Atom, android-27 | Google Play Intel x86 Atom, android-28 | Google APIs Intel x86 Atom_64, android-28 | Google Play Intel x86 Atom_64
    IDEs:
      Android Studio: 3.2 AI-181.5540.7.32.5056338
      Xcode: 10.1/10B61 - /usr/bin/xcodebuild
    npmGlobalPackages:
      react-native-cli: 2.0.1

Спасибо, @aaronjensen много часов боролся над этим ...

Я использую новую систему сборки с 58 года, без проблем.

У меня были проблемы Multiple commands produce * подобные описанным выше, но это было из-за того, что осталось до того, как я переключился на Pods (связывание); убедитесь, что вы удалили все Linked Frameworks and Libraries связанные с React Native, из вашего проекта Xcode (не из созданной рабочей области), если вы сейчас используете Pods.

После того, как вы очистили его и перешли на использование RN через Pods, он должен выглядеть примерно так:

image

И НЕ так:
image

Обратите внимание, что старая система сборки игнорировала эти дублирования при попытке использовать RN посредством связывания & pods; в новой системе сборки нет; так что, возможно, они у вас были в течение некоторого времени.

Если вы строите с помощью xcodebuild например, для Detox, обязательно примените предложение @aaronjensen сверху к вашей команде сборки.

@salakar Я делал то же самое без проблем. Следует отметить, что если вы вручную связали сторонний Libray без модулей, у него могут возникнуть проблемы с поиском React Native. В основном попробуйте переключить все на Pods.

Закрытие согласно комментарию @Salakar .

@cpojer IMHO, это не решено, если решение требует ручных действий после создания простого проекта с react-native init . Это не то, чего ожидают новые пользователи. По умолчанию должно работать без каких-либо изменений в Xcode и без CocoaPods. (Хотя CocoaPods великолепен и отлично работает с RN 😏)

Как объяснялось ранее, я создал образец приложения с react-native init и запустил его в Travis CI. Это хорошо показывает, что сборка отлично работает с Xcode 9 и Xcode 10 с устаревшей системой сборки. И это не работает с новой системой сборки Xcode 10.

Вы можете увидеть историю сборки здесь, на GitHub , мастер уже имеет версию 0.59.0-rc.1 и имеет ту же проблему.

История сборки для разных веток доступна в Travis CI (мастер - Xcode 9 и есть две ветки для Xcode 10) и как запрос на извлечение

Как сказано. ИМХО. 😏

@jerolimov в вашей сборке не указывается место назначения , что кажется важным, поскольку в противном случае она пытается создавать артефакты как для tvOS, так и для iOS, что вызывает проблему, которую вы видите.

Что неясно, так это то, что RN может делать что-то, что может привести к тому, что новая система сборки неявно узнает, что вы хотите, или это на самом деле просто ошибка в xcode (в этом случае это неправильное репо для проблемы) .

Учитывая комментарий @Salakar

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

В Xcode щелкните правой кнопкой мыши все элементы, которые ссылаются на React Native (обычно в разделе Frameworks или Libraries на боковой панели), и выберите «удалить ссылки». В конце процесса убедитесь, что в разделе «Связанные библиотеки и фреймворки» нет ссылок на React Native. Обратите внимание, что при этом ваши другие сторонние библиотеки, которые зависят от React Native, также должны быть связаны через Pods. (Большинство основных поддерживают это, и это приятно.)

Я столкнулся с этим и с детоксом. Я исправил это, указав место назначения в xcodebuild вместо sdk: -destination 'platform=iOS Simulator,name=iPhone 7'

@aaronjensen Не могли бы вы предоставить полный код в качестве образца?

"xcodebuild -project ios/AppName.xcodeproj -scheme AppName -configuration Debug -derivedDataPath ios/build -destination 'platform=iOS Simulator, name=iPhone 7'" ?

Конечно, то, что у вас есть, очень похоже на то, что мы используем.

xcodebuild -project ios/AppName.xcodeproj -scheme AppName -configuration Debug -destination 'platform=iOS Simulator,name=iPhone 7' -derivedDataPath ios/build

У меня также была ошибка Multiple commands produce с libReact.a & libyoga.a .
Я использую:

  • Xcode 10
  • реагировать-родной 0.57.0
  • Какао-стручки

Чтобы преодолеть это, я добавил это в свой Podfile :

  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

Затем перестройте проект Pods с помощью:

$ pod install

Полная информация о среде:


  React Native Environment Info:
    System:
      OS: macOS High Sierra 10.13.6
      CPU: x64 Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
      Memory: 4.10 GB / 32.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 10.9.0 - ~/.nvm/versions/node/v10.9.0/bin/node
      Yarn: 1.9.4 - /usr/local/bin/yarn
      npm: 6.4.1 - ~/.nvm/versions/node/v10.9.0/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.0, macOS 10.14, tvOS 12.0, watchOS 5.0
    IDEs:
      Xcode: 10.0/10A255 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.5.0 => 16.5.0
      react-native: 0.57.0 => 0.57.0
    npmGlobalPackages:
      create-react-native-app: 1.0.0
      react-native-cli: 2.0.1

отличная работа
rm -rf Pods; pod install у меня сработало

@Salakar Удаление всех библиотек RCT * из Linked Frameworks and Libraries в проекте Xcode успешно строится в iOS, но дает ошибку Native module cannot be null . И только после того, как я добавлю libReact.a и другие libRCT*.a библиотеки, сборка Pods для управления другими зависимостями.

Ниже как выглядит наш подфайл,

`` источник ' https://github.com/CocoaPods/Specs.git '

Глобальная платформа для вашего проекта

платформа: iOS, '9.0'

Включите все предупреждения из библиотек CocoaPods.

ignit_all_warnings!
плагин "cocoapods-fix-react-native"

цель 'RNMobile' сделать
# Раскомментируйте следующую строку, если вы используете Swift или хотите использовать динамические фреймворки
# use_frameworks!

# Базовые модули для RNMobile
pod 'React',: path => '../node_modules/react-native',: subspecs => [
"Ядро",
"CxxBridge",
"DevSupport",
# следующие взяты из "Библиотек" в Xcode:
'RCTAnimation',
'RCTActionSheet',
'RCTBlob',
'RCTGeolocation',
'RCTImage',
'RCTLinkingIOS',
'RCTNetwork',
'RCTSettings',
'RCTText',
«RCTVibration»,
'RCTWebSocket'
]

# следующие зависимости являются зависимостями самого React native.
pod 'yoga',: path => '../node_modules/react-native/ReactCommon/yoga/Yoga.podspec'
pod 'DoubleConversion',: podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'Folly',: podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
pod 'glog',: podspec => '../node_modules/react-native/third-party-podspecs/GLog.podspec'

# Дополнительные капсулы для WahedMobile
pod 'AppCenter / Crashes', '~> 1.13.0'
pod 'AppCenter / Analytics', '~> 1.13.0'
pod 'AppCenterReactNativeShared', '~> 1.12.0'
pod 'RNVectorIcons',: path => '../node_modules/react-native-vector-icons'
pod 'lottie-react-native',: path => '../node_modules/lottie-react-native'
pod 'lottie-ios',: path => '../node_modules/lottie-ios'
pod 'RNAWSCognito',: path => '../node_modules/amazon-cognito-identity-js'
pod 'TouchID',: path => '../node_modules/react-native-touch-id'
pod 'BVLinearGradient',: path => '../node_modules/react-native-linear-gradient'
pod 'RNGestureHandler',: path => '../node_modules/react-native-gesture-handler'
pod 'RNSVG',: path => '../node_modules/react-native-svg'
pod 'react-native-camera',: path => '../node_modules/react-native-camera'

pod 'CodePush',: path => '../node_modules/react-native-code-push'

pod 'RNAnalytics',: path => '../node_modules/@segment/analytics-react-native'

# Firebase Libs
pod 'Firebase / Core', '~> 5.15.0'
pod 'Firebase / Messaging', '~> 5.15.0'

# Онфидо Либс
pod 'Onfido', '10 .3.0 ',: configurations => [' Debug ']
pod 'Onfido-Release', '10 .3.0 ',: configurations => [' Release ']

pod 'RNKeychain',: path => '../node_modules/react-native-keychain'

конец
`` ''

Кроме того, добавление библиотек в Linked Frameworks and Libraries создает ошибки повторяющихся символов в AppCenter.

Для справки для пользователей React Native, которые обновляются до 59 и имеют модули:
Помимо решения @anandwahed , приведенного выше, я закончил: 1 - проанализировать проект в XCode и 2 - вручную удалить каждую цель, на которой есть tvOS .

Мой подфайл post_install выглядел так:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == 'react-native-google-maps'
      target.build_configurations.each do |config|
        config.build_settings['CLANG_ENABLE_MODULES'] = 'No'
      end
    end
    if target.name == "React"
      target.remove_from_project
    end
    if target.name == 'yoga'
      target.remove_from_project
      target.build_configurations.each do |config|
          config.build_settings['GCC_TREAT_WARNINGS_AS_ERRORS'] = 'NO'
          config.build_settings['GCC_WARN_64_TO_32_BIT_CONVERSION'] = 'NO'
      end
    end
  end
end

Следуя предложению @PaulMest, у меня сработало.

у меня ваше решение сработало, танки.

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

Это и убийство устаревшего экземпляра metro packager помогло мне.

У меня возникла эта проблема, и я не использую коконады. Не могу использовать cocoapods, так как я использую встроенную навигацию.

@MakhouT с использованием

@AngefloMusic React-native-navigation не использует его, и для настройки вам необходимо изменить некоторые собственные файлы iOS. При использовании cocoapods я предполагаю, что они будут конфликтовать друг с другом при установке зависимостей pod. Однако я не уверен, так как я не слишком много кокаин. Пожалуйста, поправьте меня, если я ошибаюсь.

@MakhouT Они не конфликтуют. Фактически, если вы посмотрите на репозиторий react-native-navigation вы увидите, что там есть файл podspec. Сейчас я использую RNN с cocoapods в проекте.

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

immagine

это мой подфайл

# Uncomment the next line to define a global platform for your project
platform :ios, '10.1'

target 'TVTips' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  #use_frameworks!

  # Pods for TVTips
  pod 'Firebase/Core', '~> 5.20.1'
  pod 'Firebase/Analytics', '~> 5.20.1'
  pod 'Firebase/Auth'
  pod 'GoogleSignIn', '~> 4.4.0'
  pod 'TwitterKit', '~> 3.3.0'
  pod 'React', :path => '../node_modules/react-native', :modular_headers => true
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
  pod 'react-native-twitter-signin', :path => '../node_modules/react-native-twitter-signin'

  target 'TVTips-tvOSTests' do
    inherit! :search_paths
    # Pods for testing

    pod 'YouTubeSdk', :path => '../node_modules/react-native-youtube-sdk'

    pod 'ReactNativeLocalization', :path => '../node_modules/react-native-localization'

    pod 'RNShare', :path => '../node_modules/react-native-share'

  end

  target 'TVTipsTests' do
    inherit! :search_paths
    # Pods for testing
  end

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

      targets_to_ignore = %w(React yoga)

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

    end
  end

end

Я импортировал React как в Link Binary с библиотеками, так и в Linked Frameworks и библиотеки.
Помогите :)

Для меня работа по удалению дублированных ресурсов внутри

Фазы сборки
Как пример ниже, шрифты делали ошибку

image

Я знаю, что это решенная проблема для людей, которые переместили RN в Pods или людей, которые используют RN> 0.60.x, но если вы еще не готовы или мигрируете, это наше временное решение (оно в основном удалило конфигурацию tvOS из файла React Native pbxproj, что, кажется, вызывает несколько целей).

Мы используем его в нашем сценарии после установки

const xcode = require('xcode');
const fs = require('fs');
const path = require('path');

const reactNativeProjectPath = path.resolve(__dirname, '../node_modules/react-native/React/React.xcodeproj/project.pbxproj');
const myProj = xcode.project(reactNativeProjectPath);

myProj.parse(err => {
    if (err) {
        throw err;
    }

    const nativeTargets = myProj.hash.project.objects.PBXNativeTarget;

    Object.keys(nativeTargets).forEach(nativeTargetKey => {
        const target = nativeTargets[nativeTargetKey];
        if (target.name && target.name.indexOf('-tvOS') !== -1) {
            console.log(`Removing ${target.name}:${nativeTargetKey} in React pbxproj`);
            delete nativeTargets[nativeTargetKey];
        }
    });

    fs.writeFileSync(reactNativeProjectPath, myProj.writeSync());
    console.log(`All mentioned of tvOS removed in React pbxproj`);
});

Для тех, кто использует Fastlane и сталкивается с этой проблемой, решение @PaulMest работает: добавьте все необходимые цели в target_to_ignore, а затем запустите rm -rf ios/Pods && pod install перед запуском Fastlane

Для меня работа по удалению дублированных ресурсов внутри

Фазы сборки
Как пример ниже, шрифты делали ошибку

image

Добавляя к ответу @aerda , я удалил все шрифты (файлы .tff), используемые в react-native-vector-icons, из Build Phases> Copy Bundle Resources, и мой проект сейчас строится.

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

Я подтверждаю то же самое с дублированием шрифтов, только после обновления до стабильной версии Xcode 11 (Mac 10.14.6). Удаление шрифтов в разделе [CP] Copy Pods Resources на этапах сборки Xcode и сборка снова работает.

Была и использует новую систему сборки. На RN 0.60.5.

@fungilation то же самое со мной (Xcode 11 - обновлен сегодня, новая система сборки и RN 0.60.5). Мне нужно удалить весь шрифт под Copy Bundle Resources и он работает.

Но когда я в следующий раз выполню команду pod install , эти записи появятся снова 😂️

то же самое здесь с 0.61.0-rc.3 и xcode 11 11A420a mojave 10.14.6

Я удалил только response-native-vector-icons tff, и он работает. Не нужно удалять все tffs

удалите предыдущие модули, затем запустите модуль обновления, он будет работать.

вот что я добавил в свой подфайл:

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

  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf'
    end
  end
end

вот что я добавил в свой подфайл:

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

  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf'
    end
  end
end

Я пробовал эту команду (с быстрой полосой), но даже после этого ошибки не исчезли. 😢

error: Multiple commands produce '.../UninstalledProducts/iphoneos/libRNGestureHandler.a':

Я получаю похожие ошибки для 4 других библиотек, которые я установил -
RNKeyChain, RNAsyncStorage, RNDeviceInfo и BVLinearGradient

Вот мое окружение -

System:
    OS: macOS 10.15.1
    CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
    Memory: 1.54 GB / 16.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 12.10.0 - /usr/local/bin/node
    Yarn: 1.17.3 - /usr/local/bin/yarn
    npm: 6.11.3 - /usr/local/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
    Android SDK:
      API Levels: 23, 26, 27, 28, 29
      Build Tools: 27.0.3, 28.0.3, 29.0.1
      System Images: android-19 | Google APIs Intel x86 Atom, android-22 | Google APIs Intel x86 Atom, android-22 | Google APIs Intel x86 Atom_64, android-23 | Google APIs Intel x86 Atom, android-26 | Google APIs Intel x86 Atom, android-27 | Google Play Intel x86 Atom, android-28 | Google APIs Intel x86 Atom, android-28 | Google Play Intel x86 Atom, android-29 | Google Play Intel x86 Atom
  IDEs:
    Android Studio: 3.5 AI-191.8026.42.35.5977832
    Xcode: 11.2/11B52 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.8.6 => 16.8.6 
    react-native: ^0.60.5 => 0.60.5 
  npmGlobalPackages:
    react-native-cli: 2.0.1

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

Я подтверждаю то же самое с дублированием шрифтов, только после обновления до стабильной версии Xcode 11 (Mac 10.14.6). Удаление шрифтов в разделе [CP] Copy Pods Resources на этапах сборки Xcode и сборка снова работает.

Была и использует новую систему сборки. На RN 0.60.5.

Для новичков вроде меня: нужно отредактировать файл <PROJECT_FOLDER>/ios/<PROJECT_NAME>.xcodeproj/project.pbxproj

Затем закомментируйте строки шрифтов (файлы, заканчивающиеся на .ttf) следующим образом:

inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-drawer2/Pods-drawer2-resources.sh", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", // "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", ); name = "[CP] Copy Pods Resources"; outputPaths = ( // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", // "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", );

И мне приходилось повторять этот процесс каждый раз, когда я запускал pod install

Была ли эта страница полезной?
0 / 5 - 0 рейтинги