Почему при попытке запустить приложение React-Native на устройстве ios все RCT ... ссылаются на ошибки "неопределенный символ"? - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь запустить свое первое приложение React-Native на устройстве, но сборка всегда завершается с ошибкой:

ld: warning: directory not found for option '-L/Users/XXXX/Library/Developer/Xcode/DerivedData/nigh-hktjvygosupgnoaafsvgyowhzsqi/Build/Products/Debug-iphoneos/React'

ld: warning: directory not found for option '-L/Users/XXXX/Library/Developer/Xcode/DerivedData/nigh-hktjvygosupgnoaafsvgyowhzsqi/Build/Products/Debug-iphoneos/React'

ld: warning: directory not found for option '-L/Users/XXXX/Library/Developer/Xcode/DerivedData/nigh-hktjvygosupgnoaafsvgyowhzsqi/Build/Products/Debug-iphoneos/React'

ld: warning: ignoring file /Users/XXXX/Nigh/ReactNativeNigh/Nigh/ios/build/nigh/Build/Products/Debug-iphonesimulator/React/libReact.a, file was built for archive which is not the architecture being linked (arm64): /Users/XXXX/Nigh/ReactNativeNigh/Nigh/ios/build/nigh/Build/Products/Debug-iphonesimulator/React/libReact.a

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_RCTBridge", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_RCTBundleURLProvider", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_RCTConvert", referenced from:
      objc-class-ref in libRNGestureHandler.a(RNFlingHandler.o)
      objc-class-ref in libRNGestureHandler.a(RNForceTouchHandler.o)
      objc-class-ref in libRNGestureHandler.a(RNLongPressHandler.o)
      objc-class-ref in libRNGestureHandler.a(RNNativeViewHandler.o)
      objc-class-ref in libRNGestureHandler.a(RNPanHandler.o)
      objc-class-ref in libRNGestureHandler.a(RNGestureHandlerModule.o)
      objc-class-ref in libRNGestureHandler.a(RNGestureHandler.o)
      ...

Ошибка React Directory не найдена

Несколько вещей заранее:

Проект работает нормально на эмуляторе XCode.

Я использую cocoapods и пытаюсь запустить сборку из xcWorkspace вместо проекта (хотяполный путь к цели - /Users/XXXX/Nigh/ReactNativeNigh/Nigh/ios/nigh.xcodeproj, что меня немного смущает).

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

Похоже, все, что мне нужно сделать, это добавить React в папку Debug-iphoneos, но я не уверен, как это сделать, или если это решение. Моя первая попытка состояла в том, чтобы убедиться, что React находится в целях построения схемы. Это был первый в списке со всеми флажками, за исключением почему-то он сказал React (отсутствует). За React Native / Xcode Upgrade и теперь RCTConvert.h не найден Я удалил React (отсутствует) из списка целей и попытался добавить React снова, но React даже не отображается в списке. Кроме того, папка Pods / Products показывает файл libReact.a по-другому, чем другие файлы .a, без значка «Архив» (?):

Список пакетов / продуктов

Вот подфайл:


require_relative '../node_modules/react-native-unimodules/cocoapods'

target 'nigh' do
  # Pods for nigh
  use_frameworks!

    # pod 'AWSCore', '~> 2.12.0'
    pod 'AWSCore', '~> 2.10.2'
    pod 'AWSAppSync', '~> 2.14.2'

  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'CxxBridge',
    'DevSupport',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTBlob',
    'RCTGeolocation',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTNetwork',
    'RCTSettings',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket',
  ]

  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
  pod 'RNGestureHandler', :podspec => '../node_modules/react-native-gesture-handler/RNGestureHandler.podspec'
  pod 'RNReanimated', :podspec => '../node_modules/react-native-reanimated/RNReanimated.podspec'
  pod 'react-native-google-maps', path: '../node_modules/react-native-maps'  # Uncomment this line if you want to support GoogleMaps on iOS
  pod 'GoogleMaps'  # Uncomment this line if you want to support GoogleMaps on iOS
  pod 'Google-Maps-iOS-Utils' # Uncomment this line if you want to support GoogleMaps on iOS

  use_unimodules!


  pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'

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

  pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info'

  pod 'react-native-slider', :path => '../node_modules/@react-native-community/slider'

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

  pod 'react-native-cameraroll', :path => '../node_modules/@react-native-community/cameraroll'

  pod 'react-native-image-picker', :path => '../node_modules/react-native-image-picker'

  pod 'RNFS', :path => '../node_modules/react-native-fs'

end

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
  end
end

Я закомментировал блок if target.name == "React", но ошибка проявляется в любом случае.

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

1 Ответ

0 голосов
/ 08 ноября 2019

Я полагаю, что ваша проблема связана с use_frameworks!, попробуйте удалить эту строку, удалить DerivedData, Pods, xcworkspace, Podfile.lock и pod install снова.

Я получил эту проблему в прошлом месяце при обновлениимоя версия RN. Эта глупость заняла у меня 1 неделю, чтобы понять проблему, и 20 минут, чтобы ее решить.

Надеюсь, эта помощь

...