代码之家  ›  专栏  ›  技术社区  ›  Will Haley

为什么Xcode构建配置的精确副本会失败?

  •  3
  • Will Haley  · 技术社区  · 6 年前

    我有一个 react-native 10.0 使用默认值 Release Debug 生成配置。我用 Xcode Product -&燃气轮机; Archive 或者按“播放”按钮,一切正常。太好了!

    释放 . 它被命名为 Release copy 调试 Debug copy .

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

    Run 任务使用副本时,任务在 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 这个 预编译桥接头 任务,但只是遇到了一个不同的,类似的错误。同样,原始的构建配置在副本失败的地方工作。

    我已经在用了 Find implicit dependencies Cocoapods ,我已经重新启动并清除了Xcode Derived Data ,请记住

    为什么会这样?我是不是漏了一步?这可能是一个限制吗 反应本机 它只支持默认的构建配置?

    1 回复  |  直到 6 年前
        1
  •  5
  •   Will Haley    6 年前

    很自然,当我发布问题的那一刻,我就通过谷歌找到了我需要的答案

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

    为每个新版本生成配置的头搜索路径添加一个条目:

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

    $(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)
    

    有人可能想知道,当我们只更改构建配置名称并且它已经在为发布工作时,为什么需要这样做。React Native支持即时调试和发布构建配置,而任何其他配置都需要手动设置。

    果然,那把它修好了。答案是 Release Debug 开箱即用,因此非标准生成配置需要额外的配置。