class 'RCTViewManager' XCode 的重复接口定义

Duplicate interface definition for class 'RCTViewManager' XCode

我按照 AirBnb 的安装说明将 React Native Maps 添加到我的项目中:

https://github.com/airbnb/react-native-maps/blob/master/docs/installation.md

现在我在尝试使用 Xcode 构建项目时遇到这些编译错误。如果我在终端中使用 "react-native run-ios",该应用程序仍会运行,但我想解决此问题。我尝试了以下 link 中提出的解决方案,但没有解决任何问题:

https://github.com/airbnb/react-native-maps/issues/1017

最初对于不同的 React Native 类 实际上有多个这样的错误,但是当我将相关导入从引号语法替换为 <> 语法时,它们被修复了。

例如,如果错误是 'RCTView',我会将 #import "RCTView.h" 替换为 #import <React/RCTView.h>

但是,这并没有修复这个错误,这是唯一剩下的错误。

我在下面包含了相关的屏幕截图:

非常感谢任何能解决这个问题的人。

我终于解决了这个问题!我更改了 podfile,以便注释掉 used pod 'React'... 行并取消注释另一个,然后按照此处的解决方案:

https://github.com/airbnb/react-native-maps/issues/789

ios/Pods/Headers/Private/React-Core/React/ 中的所有文件都应该 Symbolic Links 到节点模块 React 文件夹。

因此 ios/Pods/Headers/Private/React-Core/React/RCTViewManager.h 处的文件应该是 link 到 ../../../../../../node_modules/react-native/React/Views/RCTViewManager.h 的符号文件。

对该目录中的所有文件执行此操作,您将不会出现 Duplicate interface definition 错误。


在我的例子中,我没有符号 link,而是在 Pods 中复制了整个文件。这导致了两次接口声明。

我知道这是一个很老的问题,但我最近解决了同样的问题。也许它也可以帮助其他人。