为什么Xcode Build Configuration的精确副本失败?

时间:2018-09-24 02:01:36

标签: xcode react-native

我有一个带有桥接Swift代码的react-native应用,它使用默认的10.0Release构建配置,正在构建,运行和归档Xcode Debug时没有问题。我使用Xcode-> Product-> Archive或“播放”按钮,一切正常。太好了!

然后,今天我添加了一个新的构建配置,该配置与Release完全相同。它被命名为Release copy。我也对Debug做过同样的事情,它的重复项是Debug copy

screenshot of the xcode menu showing the process of duplicating the Release build configuration

如果我尝试使用副本运行相同的ArchiveRun任务,则这些任务将在Precompile bridging header处失败。

/Users/whaley/dev/app/theApp/theApp-Bridging-Header.h:5:9: error: 'React/RCTBridgeModule.h' file not found
#import <React/RCTBridgeModule.h>
        ^
1 error generated.
<unknown>:0: error: failed to emit precompiled header '/Users/whaley/Library/Developer/Xcode/DerivedData/theApp-ckvpglaqydwzhadbbyqoprcjvnod/Build/Intermediates.noindex/ArchiveIntermediates/theApp/PrecompiledHeaders/theApp-Bridging-Header-swift_320079J7441HX-clang_QK5YQQC41WXA.pch' for bridging header '/Users/whaley/dev/theApp/ios/theApp-Bridging-Header.h'

在我看来,很奇怪,因为这应该是可以正常运行的构建配置的精确副本。

如果我切换回原始的构建配置,一切都很好。原稿始终有效,而复印件始终不合格。

我尝试了disabling Precompile bridging header任务,但是遇到了另一个类似的错误。同样,原始构建配置在复制失败的地方起作用。

我已经在使用Find implicit dependencies,桥接头已正确命名,我没有在使用Cocoapods,我已经重新启动并清除了Xcode的Derived Data,请记住正常工作。只是这些重复的构建配置失败了。

为什么会这样?我在这里错过了一步吗?这可能是对react-native的限制,它仅支持默认的构建配置吗?

1 个答案:

答案 0 :(得分:3)

自然地,当我发布问题的那一刻,我设法通过Google找到了我需要的答案

感谢Mateusz Klimczak在其网站上清楚地说明了问题和解决方法。

  

为每个新的“发布”版本配置在“标题搜索路径”中添加一个条目:

$(BUILD_DIR)/Release-$(PLATFORM_NAME)/include
  

为每个新的发布版本配置向库搜索路径添加条目:

$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)
  

一个人可能想知道为什么当我们仅更改构建配置名称并且该名称已经适用于Release时为什么需要这样做。 React Native支持开箱即用的Debug和Release构建配置,而其他任何配置都需要手动设置。

果然解决了。答案是:现成仅支持ReleaseDebug,因此非标准的Build Configurations需要额外的配置。