Почему сборка команды ‘react-native run-ios’ завершается с ошибкой после обновления до 0.63.3?

#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

Этапы сборки Xcode: введите описание изображения здесь

Комментарии:

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, вы можете использовать это решение прямо сейчас:

   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