ios - 创建新的构建配置导致 header 未找到错误

标签 ios xcode react-native xcode8

在 Xcode 中我创建了一个新的 Staging构建配置。我复制了 Release配置来实现它。 ReleaseDebug配置构建得很好。当我选择 Staging配置我最终遇到了标题问题。 我检查了build设置以确保所有三个配置具有相同的 header 搜索路径。

作为一个重要的旁注,问题是在我拥有的几个相互引用的库之间突然出现的。

具体来说,我正在使用一个名为 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。

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

最佳答案

问题在于 RN 0.40 处理 header 的方式。 React 只知道 Release 和 Debug,因此您必须将 Release header 路径添加到暂存配置中,并确保首先将 React 作为依赖项构建。

方案:

  • 转到 Product->Scheme->Manage Schemes
  • 双击您的方案。就我而言,我制定了一个staging 方案并且 在 Run 部分将构建配置设置为 Staging
  • 然后在Build部分,确保Parallelize Build关闭
  • 确保 React 构建目标在目标列表中。如果不, 点击 + 按钮,添加它,并将其拖到顶部。然后点击关闭

目标依赖:

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

标题路径:

  • 在导航器中选择您的目标,转到build设置
  • 点击+,添加用户自定义设置REACT_HEADERS_PATH并将值设为$(BUILD_DIR)/Release-$(PLATFORM_NAME)/include。它应该解析为类似 build/Release-iphoneos/include
  • 的内容
  • 然后仍在Build Settings中,向上滚动到Header Search Paths并将$(REACT_HEADERS_PATH)添加到仅用于暂存配置的列表中.

现在清理并构建...

我找到了这个解决方案 here on Github经过2天的挣扎。所有功劳归于该评论的作者。

关于ios - 创建新的构建配置导致 header 未找到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41684723/

相关文章:

ios - 修复 : . 中的错误重复符号 _response ...:链接器命令失败,退出代码为 1(使用 -v 查看调用)

ios - lldb断点,加载nib但没有得到UITableView

ios - 在 viewWillAppear 之前设置 UINavigationItem 标题

ios - UITextView - 在 XCode 5 上设置字体不适用于 iOS 6

ios - 使用 SBJSON 解析 JSON,问题

javascript - React Native setState JSON 对象

reactjs - ScrollView 位置在子组件重新渲染(更新)时重新启动

ios - 显示 json 序列化错误的用户友好消息

ios - 如何在 iOS 上将圆形按钮在横向和纵向上对齐?

git - 将 React Native 与 Git 结合使用