使用自定义xcode构建配置找不到“ React / RCTBundleURLProvider.h”文件

时间:2018-07-09 10:54:42

标签: ios xcode react-native

在使用具有自定义“ Ad-Hoc”配置的fastlane构建RN应用程序时,我总是会遇到如下错误:

[01:24:15]: ▸ In file included from /Users/vagrant/git/node_modules/react-native/Libraries/LinkingIOS/RCTLinkingManager.m:8:
[01:24:15]: ▸ /Users/vagrant/git/node_modules/react-native/Libraries/LinkingIOS/RCTLinkingManager.h:10:9: fatal error: 'React/RCTEventEmitter.h' file not found
[01:24:15]: ▸ #import <React/RCTEventEmitter.h>
[01:24:15]: ▸         ^~~~~~~~~~~~~~~~~~~~~~~~~
[01:24:15]: ▸ 1 error generated.

2 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,尝试了许多替代方法后,发现问题出在Xcode中的自定义Build Configuration(在我的情况下是Alpha和Beta)。编译时,显然Xcode也会尝试在Frameworks上使用Target Build Config,这会导致错误。

解决方案一(手动)

作为beretis回答手动进行,但是很难维护,因为每当添加新的Framework / Library时,都必须在其中设置Build Configs,否则会出现新的错误。

第二种解决方案(自动)

使用react-native-schemes-manager(https://www.npmjs.com/package/react-native-schemes-manager)。

此软件包可在所有框架中同步您的自定义构建配置。

yarn add --dev react-native-schemes-manager

npm install --save-dev react-native-schemes-manager

在您的 package.json 中添加postinstall命令,因此,每次安装新的软件包/框架时,它将同步您的构建配置。

"scripts": {
        "postinstall": "react-native-schemes-manager all"
    },

仍然在package.json中,使用config添加新密钥。

   ...

   "xcodeSchemes": {
       "Debug": ["Alpha"],
       "Release": ["Beta"]
   },

   ...

在上面的示例中,所有框架将具有4种构建配置:

Debug,Release,Alpha(从Debug复制),Beta(从Release复制)。

之后,只需运行:

npm run postinstall

希望有帮助!

答案 1 :(得分:1)

可以通过将自定义配置添加到xcode中的所有项目依赖项(RN依赖项)来解决问题。

enter image description here