在编译 iOS 时,React Native 出现“未定义符号架构 x86_64:”_RCTSetLogFunction“”的错误。

3

我正在改进一款旧的React-Native应用程序(自2018年以来没有更新),将其迁移到最新版本。我从react-native 0.59迁移到了最新的0.64。

为此,我得到了react-native migration help tool的帮助。

我还必须更新我的依赖项,以使用auto-link和cocoa pods。我在移动端和React Native方面相对较新(我的背景是纯React Web开发),因此可能会有一些显而易见的问题我忽略了。
但是,虽然Android在我的Mac上编译并成功运行,但我无法使iOS编译工作。

正如标题所说,我遇到了以下错误:

Undefined symbols for architecture x86_64: "_RCTSetLogFunction", referenced from: -[MetronomeWalletTests testRendersWelcomeScreen] in MetronomeWalletTests.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

这发生在测试项目中,而不是主项目中(或者它被称为其他什么名称)。

我尝试过的事情

如果我理解正确,这个错误发生在“Link {projectName}Tests (x86_64)”阶段。

这些都没有起作用。我已经没有更多的想法了。

环境:

  • Mac pro,版本为Big Sur 11.3.1(我对Mac也比较陌生,请告诉我是否有遗漏)
  • RN版本:0.64.2
  • Xcode版本:12.5.1
我遇到了一个错误,无论是在控制台还是在Xcode中构建都出现了这个错误。

留下一些关于我“解决”这个问题的评论:其实我并没有真正解决它。我只是在定义这个函数的行上做了一些注释,然后继续前进——毕竟,在这个遗留应用程序中没有测试。 - Gonzalo.-
1个回答

3

看起来这个问题已经在新的脚手架项目中得到了解决。我在将现有的React Native项目从0.59.10升级到0.65时也遇到了这个问题,但注意只有在Release模式下构建(例如在Xcode中归档项目)时才会出现。

对我而言,解决方案在这个PR中有所概述 - 要将RCTSetLogFunction的任何使用包装在#ifdef DEBUG块内,以防止在Release模式下运行。

我意识到这可能无法回答原始问题,但我想发布它在这里,以防对其他人有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接