在未找到标头错误

时间:2017-01-16 20:45:44

标签: ios xcode react-native xcode8

在Xcode中,我创建了一个新的Staging构建配置。我复制了Release配置来实现它。 ReleaseDebug配置都可以正常构建。当我选择Staging配置时,我最终会遇到标题问题。 我已检查构建设置,以确保所有三个配置都具有相同的标头搜索路径。

作为一个重要的注意事项,我所拥有的几个相互引用的库之间会出现问题。

具体来说,我正在使用一个名为CodePush的库,它引用了React库,如下所示:

#if __has_include("RCTEventEmitter.h")
    #import "RCTEventEmitter.h"
#else
    #import "React/RCTEventEmitter.h"
#endif 

其中RCTEventEmitter.h文件中的#import <React/RCTBridge.h>文件与RCTBridge文件中的文件未找到头文件的来源。

我正在使用react native 0.40和react-native-code-push 1.16.1-beta。

有关可能导致问题的原因的任何想法。如果您需要更多信息,请告诉我,我很乐意提供。我想提一下,我不相信这是图书馆的问题,而是我的设置。我怀疑这只是编译器命中的第一个库。

2 个答案:

答案 0 :(得分:17)

问题在于RN 0.40处理标头的方式。 React只知道Release和Debug,所以你必须将Release头路径添加到你的staging配置中,并确保首先构建React作为依赖。

<强>方案:

  • 转到Product->Scheme->Manage Schemes
  • 双击您的方案。就我而言,我做了一个 staging 计划 在运行部分中将构建配置设置为暂存
  • 然后在构建部分中,确保并行化构建 关闭
  • 确保React构建目标位于目标列表中。如果不, 点击 + 按钮,添加它,然后将其拖到顶部。然后点击关闭

目标依赖关系:

  • 现在在导航器中选择目标,转到构建阶段,然后选择 在目标依赖项下添加React。这可以确保XCode在项目的其余部分之前构建React。

标题路径:

  • 在导航器中选择目标,转到构建设置
  • 点击 + ,添加用户定义的设置REACT_HEADERS_PATH并将值设置为$(BUILD_DIR)/Release-$(PLATFORM_NAME)/include。它应该解决为build/Release-iphoneos/include
  • 之类的问题
  • 然后仍然在构建设置中,向上滚动到标题搜索路径,并将$(REACT_HEADERS_PATH)添加到仅用于分段配置的列表中。

现在清洁和建造......

我在奋斗了2天后找到了这个解决方案here on Github。所有功劳都归功于该评论的作者。

答案 1 :(得分:1)

上述解决方案对我不起作用。这可能对某人有帮助。

  1. 在XCode中打开您的项目。
  2. 打开Libraries文件夹。你应该看到React.xcodeproj和几个RCT * .xcodeproj。
  3. 将React.xcodeproj拖到其他每个项目中。
  4. 单击每个项目并导航到Build Phases选项卡。
  5. 单击Target Dependencies并将React添加为目标依赖项