React Native: сборка для IOS завершилась неудачно на XCode 9.2 и 9.4 и RN 55.4 - PullRequest
0 голосов
/ 03 сентября 2018

Итак, как сказано в названии, я попробовал обе версии Xcode, но все равно не повезло. Это ошибка, которую я получаю:

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_RCTCxxBridge", referenced from:
      objc-class-ref in libReact.a(RCTBridge.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я пробовал:

  • после этих предложений здесь
  • очистка проекта между сборками
  • перезапуск XCode и самого Mac
  • добавление модификаций в подфайл, например:

    # Uncomment the next line to define a global platform for your project
     platform :ios, '9.0'
    
    target 'Absent' do
      # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
      # use_frameworks!
    
      # Pods for Absent
        pod 'Firebase/Core', '~> 5.3.0'
        pod 'Firebase/Messaging', '~> 5.3.0'
        pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga/'
        pod 'React', path: '../node_modules/react-native', :subspecs => [
        'RCTGeolocation',
        'RCTNetwork',
        'Core',
        'DevSupport',
        'BatchedBridge',
        'RCTAnimation',
        'RCTText',
        'RCTWebSocket'
        ]
    
      target 'AbsentTests' do
        inherit! :search_paths
        # Pods for testing
      end
    
    end
    
    target 'Absent-tvOS' do
      # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
      # use_frameworks!
    
      # Pods for Absent-tvOS
    
      target 'Absent-tvOSTests' do
        inherit! :search_paths
        # Pods for testing
      end
    
    end
    
    post_install do |installer|
     installer.pods_project.targets.each do |target|
        if target.name == "React"
             target.remove_from_project
         end
     end
    end
    
  • Попробовал использовать RCTCxxBridge и CxxBridge вместо BatchedBridge, потому что он предположительно устарел

Но все равно не повезло ... Любые указатели будут оценены здесь:)

1 Ответ

0 голосов
/ 05 сентября 2018

Итак, судя по комментарию, очевидно, что предыдущий сбойный кеш сборок испортил мой процесс архивации. Все, что мне нужно было сделать, это удалить node_modules, ios/builds и ios/Pods, затем сделать npm install, react-native link и cd ios && pod install еще раз, и проект был хорош.

После этого я получал duplicate symbols on arm64 ошибку, которая была просто потому, что оба react-native и RCTWebSocket имеют некоторые перекрывающиеся классы. Поэтому, чтобы решить, что мне просто нужно удалить libRCTWebSocket.a из информационной подкатегории Project Linked Frameworks and Libraries на вкладке General из XCode.

Отдельное спасибо @needsleep за решение!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...