无法编译 React Native iOS 应用程序以在物理设备上运行,React Native Firebase 出现问题



由于某种原因,由于最近以来,我无法从Xcode甚至命令行在物理设备上运行我的React Native应用程序。我收到以下错误:

duplicate symbol '_md5_block_data_order' in:
/XXX/Library/Developer/Xcode/DerivedData/XXXX-bdrylwsxpcqgzvgkcljteyttcdmr/Build/Products/Debug-iphoneos/BoringSSL-GRPC/libBoringSSL-GRPC.a(md5.o)
/XXX/project/ios/Pods/OpenSSL-Universal/ios/lib/libcrypto.a(md5_dgst.o)
ld: 1 duplicate symbol for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

但是,它在模拟器中工作正常。我可以毫无问题地将应用程序上传到AppStoreConnect。

据我了解,看起来 2 个库中存在相同的符号。不知道为什么,很可能是移动应用程序依赖项之一。

在已安装的 Pod 列表中,我既有BoringSSL-GRPC (0.0.3),也有OpenSSL-Universal (1.0.2.19)

BoringSSL由Firebase使用,OpenSSL由Flipper使用。

这是我使用的第三方依赖项列表:

pod 'Firebase/Core', '~> 6.3.0'
pod 'Firebase/Messaging', '~> 6.3.0'
pod 'Firebase/Firestore', '~> 6.3.0'
pod 'Firebase/Auth', '~> 6.3.0'
pod 'TrustKit'
pod 'Stripe', '16.0.0'
pod 'Amplitude-iOS', '~> 4.5'
pod 'Intercom', '~> 5.5.1'
flipper_pods()

当我一起删除Firebase时,它工作正常,我可以在设备上运行我的应用。但是我需要火力基地...

知道如何解决这个问题吗?

谢谢!

这是其他人也注意到的问题 https://github.com/invertase/react-native-firebase/issues/3384

大多数人看到的症状看起来像:

Pods/OpenSSL-Universal/ios/lib/libcrypto.a(bio_lib.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64

这里记录了一个上游问题 https://github.com/facebook/flipper/issues/485 在明确这将是一个比预期更大的问题之前就已关闭。

我测试了一种解决方法,该解决方法次优但目前功能正常,直到传递依赖项中可以使用带有位码的 OpenSSL 库 - 解决方法是

  • 禁用位码进行开发(这是Flipper存在的地方(
  • 确保在任何地方都打开了死代码剥离
  • 为发布模式启用位码

根据我的经验,这适用于本地设备上的调试版本(之前失败过(,并且发布模式下的 TestFlight 构建工作

希望这有帮助!

对于最新的 RN 和 Firebase 模块,我遇到了同样的问题。鳍状肢中有PR https://github.com/facebook/flipper/pull/1171,可以解决此问题,但仍未合并到master,并且似乎OpenSSL使用了1.0.2.19版本。

因此,要在真实设备中运行您的应用程序,我刚刚禁用了Flipper。为此,您需要:

  1. 注释 pod 文件和 AppDelegate.m 中的所有 Flipper 行 文件。
  2. 删除 yarn.lock 文件和 pods 文件夹
  3. 再次运行容器安装。

完成这些步骤后,所有步骤都将正常工作。

就像您提到的,这是由于多个生成的文件,您可以做的一件事是清理整个文件夹,然后在运行它之前重新启动计算机和 xcode .同时清除 Xcode 的派生数据文件夹。并重建它,删除"移动设备"中任何旧版本的RN APP,缓存也可以提供这个.还希望您最近没有更改目标名称?

清理项目然后运行,为模拟器编译库,并为设备创建重复项

相关内容

  • 没有找到相关文章

最新更新