在Xcode中,我创建了一个新的Staging
构建配置.我复制了Release
配置来实现它.这些Release
和Debug
配置都很好.当我选择Staging
配置时,我最终会遇到标题问题.我已经检查了构建设置,以确保所有三个配置具有相同的标头搜索路径.
作为一个重要的侧面说明,我所拥有的几个相互引用的库之间会出现问题.
具体来说,我正在使用一个名为CodePush的库,它引用了React库,如下所示:
#if __has_include("RCTEventEmitter.h") #import "RCTEventEmitter.h" #else #import "React/RCTEventEmitter.h" #endif
哪个RCTEventEmitter.h
文件处于tern状态#import
,而RCTBridge文件中找不到头文件的来源.
我正在使用react native 0.40和react-native-code-push 1.16.1-beta.
关于可能导致问题的任何想法.如果您需要更多信息,请告诉我,我很乐意提供.我想提一下,我不相信这是图书馆的问题,而是我的设置.我怀疑这只是编译器命中的第一个库.
问题在于RN 0.40处理标头的方式.React只知道Release和Debug,因此您必须将Release头路径添加到临时配置中,并确保首先将React构建为依赖项.
方案:
去吧Product->Scheme->Manage Schemes
.
双击您的方案.在我的例子中,我制作了一个分段方案,并在" 运行"部分中将构建配置设置为" 分段".
然后在Build部分中,确保Parallelize Build已关闭
确保React构建目标位于目标列表中.如果没有,请按+按钮,添加它,然后将其拖到顶部.然后点击关闭.
目标依赖项:
现在在导航器中选择目标,转到Build Phases,然后在Target Dependencies下添加React.这可以确保XCode在项目的其余部分之前构建React.
标题路径:
在导航器中选择目标,转到" 构建设置".
单击+,添加用户定义的设置REACT_HEADERS_PATH
并将值设置为$(BUILD_DIR)/Release-$(PLATFORM_NAME)/include
.它应该解决类似的问题build/Release-iphoneos/include
然后仍在" 构建设置"中,向上滚动到" 页眉搜索路径"并仅添加$(REACT_HEADERS_PATH)
到"分段"配置的列表中.
现在清洁和建设......
我在奋斗了2天之后在Github找到了这个解决方案.所有功劳都归功于该评论的作者.