【发布时间】:2018-02-22 19:13:45
【问题描述】:
我在 Xcode 中有一个 CocoaPods React Native 项目,在过去几个月中,该项目 99% 的时间都在工作。 (这 1% 是随机的东西,比如链接器错误,等等……似乎是随机出现和消失的)。
我今天安装了一个新的 Pod 及其对应的 npm 依赖项,过去当我添加 pod 时有时会遇到问题,直到我尝试像 pod deintegrate、pod install、react-native link 之类的东西并清理 Xcode 项目,因为例子。但这一次似乎没有任何解决办法。
每次构建时,无论是模拟器还是物理设备,我都会收到来自stdint.h 的以下错误
This file should only be included when compiling with MSVC.
找到错误的根源也很容易,它是在stdint.h中明确用户定义的:
但我终其一生都无法弄清楚它为什么会被触发。它在 cmets 中说包含 MSVC。据我所知,基于 C 的 Xcode 编译器应该提供 MSVC 版本来满足条件。此外,在过去几个小时的故障排除/实验过程中,调用错误的罪魁祸首发生了多次变化。现在它来自RCTFBSDK,但之前它来自RNFirebase。
检查完整的错误树,我可以找到请求 `stdint.h 的文件,但鉴于它是一个如此基本的文件,我怀疑它是否相关——但在这里:
根据我目前的调查,我倾向于认为是 Xcode 中的配置错误导致了问题,特别是与 CocoaPods 有关(但坦率地说,我不确定)
我所知道的是,它在没有 Pod/npm 依赖项的情况下工作(顺便说一下,它与当前抛出错误的 Facebook SDK 完全无关),当我将它添加到 package.json 和 Podfile 时,执行标准npm installpod installreact-native link会发生这种情况。
这是我尝试过的:
-
npm installnpm updatenpm linkreact-native linkpod deintegratepod install的每一个组合 - 已删除 xcworkspace 并使用
pod install重新生成它 - 删除了用户定义的错误条件(构建成功但在启动后不久崩溃并出现此错误:
[fatal][tid:com.facebook.react.ShadowQueue] Exception '*** -[__NSArrayM insertObject:atIndex:]: index 1 beyond bounds for empty array' was thrown while invoking manageChildren on target UIManager with params (... - 完全重新安装 Xcode
- 恢复到以前的 git 提交(从我添加新 pod 之前开始),它工作正常
- 朝它握拳大喊(不得已)
另外,我对我的 Podfile 和 package.json 的完整性有 100% 的信心。我从一个完善的存储库中复制了安装过程。
我很惊讶地发现这方面的信息绝对为零。我发现的最接近的东西与 C++ 相关(可以理解)。
有人对此有任何理论吗?谢谢。请让我知道我没有提供的任何其他具体信息。
【问题讨论】:
-
可能是损坏的 Xcode ModuleCache。尝试删除 DerivedData
-
@PaulBeusterien 我刚刚删除了 ~/Library/Developer/Xcode/DerivedData 中的派生数据文件夹并重新启动了 Xcode,但错误仍然无法构建。还是)感谢你的建议!我什至没有想过要尝试。
-
其实,我只是注意到现在问题不是来自 Facebook,而是来自 RNFirebase。
-
可能是 leveldb 与您的其他 Pod 之一不兼容?你能分享你的 Podfile 吗?
-
我也刚刚注意到,与以前成功的构建不同,
pod install似乎已经安装了nanopb,我认为它不应该在那里,但我不知道它是怎么做到的到了那里。这是 podfile:pastebin.com/TwynQfaL
标签: ios xcode react-native cocoapods