Здравствуйте,
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'
...
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?
Вы можете попробовать изменить систему сборки на Legacy,
Файл> Настройки рабочего пространства> Система сборки> Устаревшая система сборки.
Мы хотим использовать новую систему сборки.
Следует поддерживать новую систему сборки. Мы отслеживаем любые проблемы, с которыми люди сталкиваются с Xcode 10 или новой системой сборки в этой задаче: https://github.com/facebook/react-native/issues/19573
На первый взгляд, похоже, что ваша проблема не связана с тем, что мы исправили на master. Добавлю в список.
У меня также была ошибка Multiple commands produce
с libReact.a
& libyoga.a
.
Я использую:
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
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. Может это поможет? По крайней мере, я мог бы и буду повторять этот эксперимент, когда будет доступна новая версия.
Но с Xcode 10 сборка не удалась.
PR, которые показывают разницу в travis.yml
Сборка с ошибкой "Несколько команд создают"
При использовании Xcode 10 с устаревшей системой сборки он снова работает.
PR, которые показывают разницу в travis.yml
Успешная сборка трэвиса
@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, он должен выглядеть примерно так:
И НЕ так:
Обратите внимание, что старая система сборки игнорировала эти дублирования при попытке использовать 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'
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 ниже) приводит меня к этой болезненной ошибке при попытке создать архив.
это мой подфайл
# 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 и библиотеки.
Помогите :)
Для меня работа по удалению дублированных ресурсов внутри
Фазы сборки
Как пример ниже, шрифты делали ошибку
Я знаю, что это решенная проблема для людей, которые переместили 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
Для меня работа по удалению дублированных ресурсов внутри
Фазы сборки
Как пример ниже, шрифты делали ошибку
Добавляя к ответу @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
Самый полезный комментарий
Вы можете попробовать изменить систему сборки на Legacy,
Файл> Настройки рабочего пространства> Система сборки> Устаревшая система сборки.