#ios #react-native #react-native-ios #react-native-cli
#iOS #react-native #react-native-ios #react-native-cli
Вопрос:
Я только что обновился до RN версии 0.63.3. У меня возникли проблемы с react-native run-ios
предыдущей версией react-native после изменения названия приложения, а у проекта / схем были разные имена, эта проблема так и не была решена, все сказали просто обновить.
теперь в версии 0.33.3 по-прежнему возникает проблема с ошибкой сборки после. react-native run-ios
на этот раз ошибка:
** СБОЙ СБОРКИ **
Следующие команды сборки завершились с ошибкой: CompileC /Users/vorousjames/Library/Developer/Xcode/DerivedData/<OLD_NAME>-gdmnlxiprekjqhfiueouiidqhqnl/Build/Intermediates.noindex/<НОВОЕ ИМЯ>.build/Debug-iphonesimulator/<НОВОЕ ИМЯ>.build/Objects-normal/x86_64/AppDelegate.o /Users/Desktop/Development/App/iOS/<СТАРОЕ ИМЯ>/AppDelegate.m обычный x86_64 objective-c com.apple.compilers.llvm.clang.1_0.компилятор (1 сбой)
Нет проблем с созданием / запуском изнутри Xcode. ТОЛЬКО с react-native run-ios
РЕДАКТИРОВАТЬ: я подумал, что, возможно, возникла проблема с тем фактом, что у меня был установлен cli глобально, так как я только что звонил react-native run-ios
. Я считаю, что для этого используется глобальная установка. итак, поскольку он устарел, я удалил его глобально и попытался использовать пакет сообщества с. npx react-native run-ios
теперь он выдает другую ошибку comileC, но другую.
** СБОЙ СБОРКИ **
Не удалось выполнить следующие команды сборки: CompileC /Users/ Library/Developer/Xcode/DerivedData/App-gdmnlxiprekjqhfiueouiidqhqnl/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/RNFirebase.build/Objects-normal/x86_64/RNFirebaseMessaging.o /Users/Desktop/Development/App/node_modules/react-native-firebase/ios/RNFirebase/messaging/RNFirebaseMessaging. m обычный x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler CompileC /Users/Library/Developer/Xcode/DerivedData/App-gdmnlxiprekjqhfiueouiidqhqnl/Build/Intermediates.noindex/Pods.build/ Debug-iphonesimulator/RNFirebase.build/Objects-normal/x86_64/RNFirebaseFirestore.o /Users/Desktop/Development/App/node_modules/react-native-firebase/ios/RNFirebase/firestore/RNFirebaseFirestore. m обычный x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (2 сбоя)
Это полностью убивает мою способность быстро выполнять итерации, любые советы приветствуются
react-native: 0.63.3 react-native-cli (глобальный): 2.0.1 react-native-community / cli: ^ 4.8.0 Xcode: 12.0.1 iOS: 14.0.1
ДАТА ОБНОВЛЕНИЯ:
package.json:
{
"name": "Aflare",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"start": "react-native start",
"test": "jest",
"lint": "eslint ."
},
"dependencies": {
"@react-native-community/cli": "^4.8.0",
"@react-native-community/clipboard": "^1.2.2",
"algoliasearch": "^3.16.0",
"appcenter": "3.1.1",
"appcenter-analytics": "3.1.1",
"appcenter-crashes": "3.1.1",
"axios": "^0.19.2",
"moment": "^2.24.0",
"moment-timezone": "^0.5.27",
"prop-types": "^15.7.2",
"react": "^16.13.1",
"react-native": "^0.63.3",
"react-native-agora": "^3.1.3",
"react-native-algolia-dropdown": "^1.6.0",
"react-native-calendars": "^1.220.0",
"react-native-chart-kit": "^4.3.0",
"react-native-code-push": "^6.0.0",
"react-native-extended-stylesheet": "^0.12.0",
"react-native-firebase": "^5.6.0",
"react-native-gesture-handler": "^1.5.2",
"react-native-image-crop-picker": "^0.26.1",
"react-native-material-dropdown": "^0.11.1",
"react-native-reanimated": "^1.4.0",
"react-native-responsive-screen": "^1.4.1",
"react-native-safe-area-context": "^0.6.2",
"react-native-screens": "^1.0.0-alpha.23",
"react-native-snap-carousel": "^3.8.4",
"react-native-splash-screen": "^3.2.0",
"react-native-svg": "^9.13.6",
"react-native-view-shot": "^3.1.2",
"react-native-webview": "^9.4.0",
"react-navigation": "^4.0.2",
"react-navigation-drawer": "^2.3.3",
"react-navigation-stack": "^1.10.3",
"react-redux": "^7.1.3",
"redux": "^4.0.4",
"redux-persist": "^6.0.0",
"redux-thunk": "^2.3.0",
"rn-fetch-blob": "^0.11.2"
},
"devDependencies": {
"@babel/core": "7.8.4",
"@babel/runtime": "7.8.4",
"@react-native-community/eslint-config": "1.1.0",
"@types/react": "^16.9.46",
"@types/react-dom": "^16.9.8",
"babel-jest": "^25.1.0",
"eslint": "6.7.2",
"jest": "^25.1.0",
"metro-react-native-babel-preset": "0.59.0",
"react-test-renderer": "16.13.1"
},
"jest": {
"preset": "react-native"
}
}
After @Florin’s suggestion/process, there are now 14 build errors (from building with npx react-native run-ios
):
** BUILD FAILED **
Не удалось выполнить следующие команды сборки: Компиляция обычного x86_64 /Users/ Desktop/ Development/App/ node_modules/react-native-agora/ios / RCTAgora/Base/ BeanCovertor.swift Компиляция обычного x86_64 /Users/Desktop/Development/App/ node_modules/react-native-agora/ios/ RCTAgora/Base/Callback.swift компилирует обычный x86_64 / Users/ Desktop/ Development/App/ node_modules/react-native-agora/ios/ RCTAgora/Base/Extensions.swift компилирует обычный x86_64 /Users/Desktop/Development/App/ node_modules/react-native-agora/ios/ RCTAgora/Base/MediaObserver.swift компилирует обычный x86_64 /Users/ Desktop /Development /App/node_modules/react-native-agora/ios / RCTAgora/React/ PromiseCallback.swift компилирует обычный x86_64 /Users/Desktop/Development/App/node_modules/react-native-agora/ios/RCTAgora/React/RCTAgoraRtcChannelModule.swiftКомпилирует обычный x86_64 /Users/Desktop/Development/App/node_modules/react-native-agora/ios/RCTAgora/React/RCTAgoraRtcEngineModule. swift компилирует обычный x86_64 /Users/Desktop/Development/App/node_modules/react-native-agora/ios/RCTAgora/React/RCTAgoraRtcSurfaceViewManager.swift компилирует обычный x86_64 / Users/ Desktop/ Development/App/ node_modules/react-native-agora/ios / RCTAgora/ Base/RtcChannelEvent.swift компилирует обычный x86_64 /Users / Desktop/Development /App/ node_modules/react-native-agora/ios / RCTAgora/Base/RtcChannelEvent.swift компилирует обычный x86_64 / Users / Desktop/ Development/ App/ node_modules/react-native-agora/ios/ RCTAgora/Base/RtcChannelEventобычный x86_64 / Users/ Desktop/ Development/Slide/ Slide/ node_modules/react-native-agora/ios/ RCTAgora/ Base/ RtcEngineEvent.swift компилирует переход обычный x86_64 /Users/ Desktop/Development/ App/ node_modules/react-native-agora/ios/ RCTAgora/Base/RtcEngineEvent.swift компилирует переходобычный компилятор x86_64 /Users/ Desktop / Development/App/node_modules/react-native-agora/ios/ RCTAgora/Base/RtcSurfaceView.swift /Users/Library/Developer/Xcode/DerivedData/<Old_App_Name>-gdmnlxiprekjqhfiueouiidqhqnl/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/RNFirebase.build/Objects-normal/x86_64/RNFirebaseMessaging.o /Users/Desktop/Development/App/node_modules/react-native-firebase/ios/RNFirebase/messaging/RNFirebaseMessaging. m обычный x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (14 сбоев)
полный вывод сборки, насколько он возвращается в терминал вискозы, находится здесь: https://pastebin.com/XenEszNe
Комментарии:
1. попробуйте обновить react native cli, github.com/react-native-community/cli#updating-the-cli
2. я на версии 4.8.0, и GitHub заявляет, что совместимость с RN версии 0.63 — это react-native-community / cli ^ 4.0.0, так почему именно вы советуете это сделать, учитывая, что я уже на совместимой версии? @nazmul
3. на самом деле, хотя вы установили обновленный react native cli, иногда, если вы обновляете какую-либо старую версию react native проекта, он по-прежнему использует версию cli, с которой он был создан. github.com/react-native-community/cli/issues/1208 , возможно , эта ссылка может дать вам какую — то полезную информацию.
4. где я могу найти ту версию, с которой она была создана, зависимости от react-native в package-lock.json? Я создал проект с устаревшим глобальным
react-native-cli
5. Я бы попробовал создать новый проект в 0.63.3, протестировать его, а затем скопировать файлы вашего приложения в новый проект.
Ответ №1:
В большинстве случаев, когда я получаю разные выходные данные из сборки консоли и сборки Xcode, я подозреваю проблему с кэшированием и использую следующие шаги для устранения проблемы:
- остановить JS-сервер
- удалите производные данные в Xcode
- выполнить
pod install
- переустановите node_modules (необязательно)
npx watchman watch-del-all amp;amp; yarn start --reset-cache
- сборка с использованием консоли и сборка с использованием Xcode
На этом этапе у вас должен быть одинаковый результат от обеих команд. Если вы получаете сообщение об ошибке, внимательно прочитайте все сообщение об ошибке, есть много шансов заметить проблему с модулем, скрытым глубоко в журнале ошибок.
Внимательно изучив ваше сообщение об ошибке, похоже, что-то связанное либо с производными данными / кэшем, либо с некоторыми модулями, которые не обновляются.
Если вы все еще сталкиваетесь с проблемой, пожалуйста, ответьте на свой вопрос:
package.json
Содержание,- полное сообщение об ошибке и
- содержимое скрипта Xcode->BuildPhases
bundle react-native code and images
.
Обновить:
Если после обновления до 0.63.3 вы заметили много проблем, связанных с зависимостями React, убедитесь, что pod-файл чист и содержит только ваши специальные зависимости (те, которые не поддерживают автоматическое связывание, или те, для которых в их документации указано, что их необходимо добавить в Podfile) и не включает в себя React. Это должно выглядеть так:
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
platform :ios, '10.0'
target 'YourRnApp' do
config = use_native_modules!
use_react_native!(:path => config["reactNativePath"])
target 'YourRnAppTests' do
inherit! :complete
# Pods for testing
end
# Enables Flipper.
use_flipper!
post_install do |installer|
flipper_post_install(installer)
end
end
target 'YourRnApp-tvOS' do
# Pods for RnDiffApp-tvOS
target 'RnDiffApp-tvOSTests' do
inherit! :search_paths
# Pods for testing
end
end
Подробнее здесь:
https://react-native-community.github.io/upgrade-helper/?from=0.61.5amp;to=0.63.3
После очистки Podfile
, очистки кэша, запустите pod install
и перестройте.
На данный момент большинство ошибок должно исчезнуть.
Проверьте в Xcode любую оставшуюся ссылку на библиотеку вручную, которая не нужна, и удалите ее (те, которые поддерживают автоматическое связывание) и перестройте снова.
Если все еще не работает, проверьте project.pbxproj
в помощнике по обновлению RN.
Исправляйте ошибки одну за другой. Большинство из них должно быть исправлено с помощью помощника по обновлению RN и других ответов Stackoverflow.
Комментарии:
1. спасибо за ответ, я попробовал ваше предложение и обновил детали вопроса @FlorinDobre
Ответ №2:
Я думаю, что у библиотеки Flipper возникли проблемы, поэтому нам нужно вручную использовать версию 2.3.0.
Если вы хотите использовать flipper, вы можете использовать это решение прямо сейчас:
- Перейдите в ios / Podfile, в котором вы увидите это:
- войдите на скриншот
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
platform :ios, '10.0'
target 'pokeDex' do
config = use_native_modules!
use_react_native!(:path => config["reactNativePath"])
target 'pokeDexTests' do
inherit! :complete
# Pods for testing
end
# Enables Flipper.
#
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable these next few lines.
# Important to use at this momemt version 2.30
use_flipper!({ 'Flipper-Folly' => '2.3.0' })
post_install do |installer|
flipper_post_install(installer)
end
end
target 'pokeDex-tvOS' do
# Pods for pokeDex-tvOS
target 'pokeDex-tvOSTests' do
inherit! :search_paths
# Pods for testing
end
end
Если нет, вы можете прокомментировать сценарий установки hole use_flipper следующим образом:
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
platform :ios, '10.0'
target 'pokeDex' do
config = use_native_modules!
use_react_native!(:path => config["reactNativePath"])
target 'pokeDexTests' do
inherit! :complete
# Pods for testing
end
# Enables Flipper.
# lines commented
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable these next few lines.
# use_flipper!
# post_install do |installer|
# flipper_post_install(installer)
# end
end
target 'pokeDex-tvOS' do
# Pods for pokeDex-tvOS
target 'pokeDex-tvOSTests' do
inherit! :search_paths
# Pods for testing
end
end