未找到ios的React本机基本标头

时间:2017-02-10 11:22:30

标签: ios objective-c xcode react-native linker

在iOS链接阶段,我开始看到我的React Native项目的错误。

React原生版:0.41.20.400.39

一切正常,我编辑了Android版本,React Native代码没有更改,当这种链接错误开始显示/node_modules/react-native/React/Base/{RCTHeaderName.h}路径上的标题未找到时:

The error

In file included from /Users/user/ReactNativeProject/node_modules/react-native-vector-icons/RNVectorIconsManager/RNVectorIconsManager.h:9:
../react-native/React/Base/RCTBridgeModule.h:12:9: fatal error: 'React/RCTDefines.h' file not found
#import <React/RCTDefines.h>
        ^
  • Link Binary With Libraries 中,我包含了核心React库 (libReact.a)。

  • RCTLog.h的位置是 PROJECTROOT/node_modules/react-native/React/Base/RCTLog.h,但是 导入为#import <React/RCTLog.h>

  • React.xcodeproj新添加到库中无济于事,Xcode的Product > Clean没有帮助,也没有重新启动Xcode

  • react-native run-android有效,react-native run-ios显示错误

  • 为执行react-native run-ios

  • 的用户设置的文件权限

4 个答案:

答案 0 :(得分:29)

您是否取消选中Parallelize build选项并在构建目标中首先列出React?

你可以在Xcode =&gt;中找到这个窗口。运行按钮附近的项目图标=&gt;编辑方案=&gt;构建选项卡

答案 1 :(得分:4)

更新: Facebook React-Native上的解决方案 https://github.com/facebook/react-native/issues/11813

============

这个问题也发生在我身上。 似乎React.xcodeproj只识别配置调试发布。 React.xcodeproj的所有输出都写入 Debug-iphonesimulator Release-iphonesimulator

这意味着如果你有一些配置而不是&#34; Debug / Release&#34;,输出仍会被写入 Debug-iphonesimulator Release-iphonesimulator ,这不是我们想要的。

因此解决方案是在React.xcodeproj中添加相同的配置以匹配您自己的项目。

例如,如果你有&#34; Debug / Release / Test / AppStore&#34;在您自己的项目中有4个配置,您必须确保React.xcodeproj也具有相同的4个配置。

请点击&#34; +&#34;配置按钮,然后&#34;重复发布配置&#34;,并根据您的需要重命名。

enter image description here

答案 2 :(得分:3)

似乎有很多原因导致出现这些“缺少标头”错误,我已经尝试了很多在Stack Overflow上发布的内容,但没有任何效果。最终,我偶然发现了下面对我有用的解决方案。万一其他人有同样的问题,发贴...有点晦涩。对我来说,这是由于Xcode中的构建位置设置显然与普通的React Native不兼容造成的。解决此问题的构建位置设置如下所示:

in XCode->Settings>Locations->Advanced... make sure your Build Location is not set to Legacy, it should be set to Unique

注意:更改此设置后,可能必须使用react-native init从头开始重新初始化香草的React Native应用程序。

答案 3 :(得分:0)

在您的媒体库版本path/project folder/ios/Pods/Headers/Public-> Settings中添加Header Search Path。该问题将得到解决