【问题标题】:React native base headers for ios not found未找到 ios 的反应本机基本标头
【发布时间】:2017-06-28 17:31:56
【问题描述】:

在 iOS 链接阶段,我开始看到我的 React Native 项目出现错误。

React Native 版本:0.41.20.400.39

一切正常,我编辑了 Android 版本,React Native 代码没有改变,当这种链接错误开始出现时,/node_modules/react-native/React/Base/{RCTHeaderName.h} 路径上的标头未找到:

In file included from /Users/user/ReactNativeProject/node_modules/react-native-vector-icons/RNVectorIconsManager/RNVectorIconsManager.h:9:
../react-native/React/Base/RCTBridgeModule.h:12:9: fatal error: 'React/RCTDefines.h' file not found
#import <React/RCTDefines.h>
        ^
  • Link Binary With Libraries 中包含核心 React 库 (libReact.a)。

  • RCTLog.h 的位置是 PROJECTROOT/node_modules/react-native/React/Base/RCTLog.h,但是 导入是#import &lt;React/RCTLog.h&gt;

  • React.xcodeproj 新添加到库中没有帮助,Xcode 的Product &gt; Clean 没有帮助,重新启动 Xcode 也没有帮助

  • react-native run-android 有效,react-native run-ios 显示错误

  • 文件权限设置给执行react-native run-ios的用户

【问题讨论】:

    标签: ios objective-c xcode react-native linker


    【解决方案1】:

    您是否未选中 Parallelize build 选项并将 React 列在您的构建目标中?

    您可以在 Xcode 中找到此窗口 => 运行按钮附近的项目图标 => 编辑方案 => 构建选项卡

    【讨论】:

    • 在重新安装 react-native@0.41.2 并删除过多的 Header Search Paths 后,它似乎找到了标题。它开始显示重复的接口定义,这是一个好兆头..
    • @PeterGerhat 删除派生数据目录有帮助吗?您可以在 Xcode 首选项 => 位置选项卡中找到该文件夹​​
    • 可能 Xcode 已经做到了。 重复的接口定义是这个更改github.com/facebook/react-native/issues/11725的结果,我只是按照那里的步骤来修复它。
    • 我在开发原生模块库时遇到了这个问题。除了禁用并行构建之外,我还必须将 React 添加为目标依赖项(在构建阶段下),如下所述:github.com/facebook/react-native/issues/…
    • 这个问答应该在 react-native 的顶部列表中。
    【解决方案2】:

    更新: Facebook React-Native 上的解决方案 https://github.com/facebook/react-native/issues/11813

    ============

    这个问题也发生在我身上。 似乎 React.xcodeproj 只能识别配置 DebugRelease。 React.xcodeproj 的所有输出都写入 Debug-iphonesimulatorRelease-iphonesimulator

    也就是说,如果你有除“Debug/Release”以外的一些配置,输出仍然会写入Debug-iphonesimulatorRelease-iphonesimulator,那不是我们想要什么。

    所以解决方案是在 React.xcodeproj 中添加一个相同的配置来匹配你自己的项目。

    例如,如果你自己的项目中有“Debug/Release/Test/AppStore”4个配置,你要确保React.xcodeproj也有同样的4个配置。

    请点击Configurations的“+”按钮,然后点击“Duplicate Release Configuration”,根据需要重命名。

    【讨论】:

    • Debug/iphonesimulator 这个名字从何而来?我怎么知道这是我需要的配置名称?
    • @PetrusTheron,正确的解决方案在这里:github.com/facebook/react-native/issues/11813,由 philipshurpik 提供,2 月 21 日评论
    • 但是一旦你清理 node_modules 并重新安装它们,这个解决方案就会被覆盖
    • 不确定此问题是否已解决。但请使用此解决方案:github.com/facebook/react-native/issues/11813。它不会被覆盖。
    【解决方案3】:

    似乎有很多原因会导致这些“缺少标题”错误,我已经尝试了很多在 Stack Overflow 上发布的内容,但没有任何效果。最后,我偶然发现了下面对我有用的解决方案。发帖以防其他人有同样的问题......它有点晦涩难懂。对我来说,这是由 Xcode 中的构建位置设置引起的,该设置显然与原生 React Native 不兼容。此处显示了修复此问题的构建位置设置:

    in XCode->Settings>Locations->Advanced... make sure your Build Location is not set to Legacy, it should be set to Unique

    注意:在更改此设置后,可能必须使用 react-native init ... 从头开始​​重新初始化原生 React Native 应用程序。

    【讨论】:

      【解决方案4】:

      在你的库中添加path/project folder/ios/Pods/Headers/Public Settings -> Header Search Path。问题将得到解决

      【讨论】:

        猜你喜欢
        • 2020-05-02
        • 2016-12-08
        • 2021-11-08
        • 2021-10-17
        • 1970-01-01
        • 2019-11-02
        • 1970-01-01
        • 2020-12-18
        • 2016-10-24
        相关资源
        最近更新 更多