在 Xcode 中我创建了一个新的 Staging
构建配置。我复制了 Release
配置来实现它。 Release
和 Debug
配置构建得很好。当我选择 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/