1

我正在使用 React Native 开发一个应用程序并尝试从 React Navigation 5 迁移到 6。为此,我遵循了从 5.x 升级指南中的步骤。

React 和 React Native 的版本如下:

"react": "17.0.2",
"react-native": "0.67.2",

我已经安装了这些软件包:

"@react-navigation/bottom-tabs": "^6.2.0",
"@react-navigation/native": "^6.0.8",
"@react-navigation/stack": "^6.1.1",
"react-native-safe-area-context": "^3.4.1",
"react-native-screens": "^3.12.0",
"react-native-tab-view": "^3.1.1",

升级软件包后,我在文件夹中运行pod install命令。ios

如果我运行npx react-native run-ios --simulator="iPhone 13"命令或使用 Xcode 在设备上运行,我会收到以下错误:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_RNSSearchBar", referenced from:
      objc-class-ref in libRNScreens.a(RNSScreenStackHeaderConfig.o)
  "_OBJC_CLASS_$_RNSScreenStackAnimator", referenced from:
      objc-class-ref in libRNScreens.a(RNSScreenStack.o)
  "_OBJC_CLASS_$_RNSScreenWindowTraits", referenced from:
      objc-class-ref in libRNScreens.a(RNSScreen.o)
      objc-class-ref in libRNScreens.a(RNSScreenStack.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

看起来像是libRNScreens.areact-native-screens包裹里拿出来的。

你知道如何解决这个问题吗?

4

3 回答 3

0

在我的情况下,解决问题的最简单方法是将react-native-screens库降级到版本 3.11.1。现在它运行没有问题。

于 2022-02-24T07:57:09.193 回答
0

它可能与use_frameworks!在 Podfile 中使用有关。尝试将以下步骤添加到您的 Podfile:

pre_install do |installer|
    installer.pod_targets.each do |pod|
      if pod.name.eql?('RNScreens')
        def pod.build_type
          Pod::BuildType.static_library
        end
      end
    end
  end

详情在这里

于 2022-02-23T08:18:25.630 回答
0

解决方法很简单

删除这个

Xcode -> 构建设置 -> 搜索路径 -> 库搜索路径 -> "$(TOOLCHAINDIR)/usr/lib/swift-5.0/$(PLATFORMNAME)"

于 2022-02-23T08:31:34.087 回答