React-Native iOS XCode 版本 12.5 的旧项目构建失败

Build is failing for older projects for React-Native iOS XCode Version 12.5

看到这个最近开始出现的问题对我来说很陌生。以前,通过 运行 执行此命令 react-native run-ios,我的应用程序在 iOS 模拟器上运行良好。现在我做了很多研究,并通过 XCode 制作了我的应用程序 运行。但是不知何故,当应用程序通过 XCode.

运行s 时,metro bundler 未链接

我尝试 运行 通过 react-native run-ios 安装应用程序,但每次我都看到此错误。在这里复制粘贴每个错误太大了,但这里有一些错误:

Undefined symbols for architecture x86_64:
  "Swift._ArrayBuffer._copyContents(initializing: Swift.UnsafeMutableBufferPointer<A>) -> (Swift.IndexingIterator<Swift._ArrayBuffer<A>>, Swift.Int)", referenced from:
      generic specialization <serialized, Swift._ArrayBuffer<Swift.Int8>> of Swift._copyCollectionToContiguousArray<A where A: Swift.Collection>(A) -> Swift.ContiguousArray<A.Element> in libMixpanel-swift.a(AutomaticProperties.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)


** BUILD FAILED **


The following build commands failed:
        Ld /Users/careerlabsdev/Library/Developer/Xcode/DerivedData/CareerLabs_Elev8-gxcfanteiuxazegkgwkjkrjxbdmw/Build/Products/Debug-iphonesimulator/CareerLabs.app/CareerLabs normal
(1 failure)

为了让它发挥作用,我做了很多事情。我在这里获得的唯一成功是 while running the command react-native run-ios, it opens up the metro bundler server。之后它失败并给出 1000 行错误。我选择了有一些奶油部分的错误。从错误中挑选的一些关键字:

我做的是这样的:

  1. 正在删除 node_modules、Pods。正在清理来自 XCode 的构建。 运行 npm install 然后 cd ios && pod install 然后 运行 命令 react-native run-ios
  2. 正在删除 Pods、Podfile.lock。做了 pod install 然后在根 react-native run-ios
  3. 做这些:
rm -rf ~/Library/Caches/CocoaPods
rm -rf Pods
rm -rf ~/Library/Developer/Xcode/DerivedData/*
pod deintegrate
pod setup
pod install
cd ..
react-native run-ios
  1. 重启系统,运行再次执行命令react-native run-ios
  2. 在 XCode 的 Excluded Architecture 中添加了 arm64。请注意,这使我能够 build and run 在 XCode 上 成功 应用程序。但它没有连接到地铁捆绑服务器。看起来 运行 只是 发布模式
  3. 将我的包 react-native-gesture-handler 更新到最新的 1.10.3,看看是否能解决我的问题。但是运气不好。

我的 Podfile 看起来像这样:

  platform :ios, '10.0'

  use_flipper!({'Flipper' => '0.81.0'})
  post_install do |installer|
    flipper_post_install(installer)
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
      end
    end
  end

我现在别无选择,正在等待提供一些见解。在从未造成问题的事情上看到错误确实令人沮丧。我用的是苹果M1芯片Macbook

更新V1.0

更新V2.0

我发现了一些开发人员抱怨相同的重要地方。 XCode 在我没有通知的情况下强制将我的版本更新到 12.5。现在 XCode 给 RN 旧项目带来了问题。以下是相同的支持链接:

希望这篇文章能给和我一样迷茫的开发者一些启发。请看一下,看起来 Facebook 正在修复它,但不知道什么时候。必须密切关注它:/

我猜所有第三方 Pods 都需要更新他们的 RN Pod 规范才能使用 XCFrameworks。这就是我刚刚所做的,它似乎工作正常。

这意味着,作为 RN 包用户,您将需要等待包作者更新他们的 podspecs 以使用 XCFrameworks,或者添加一个排除 'arm64' 的构建配置拱形(但不适用于 M1 mac)。

或者,您可以访问 node_modules/<package>/thrid-party.podspec 并自行更新。但这意味着您也需要自己构建 XCFrameworks。所以.....

为了让我的应用程序再次像以前一样 运行,我做了一件很麻烦的事情,就是 将 XCode 版本降级到以前的稳定版本 ,即 版本 12.4。后来我知道了这个问题,因为,XCode 强制更新了我的版本,这开始与我现有的项目表现得很奇怪。所以我看到的唯一可行的选择是将版本降级到以前的版本,一切都像以前一样

请注意:此问题主要存在于 Apple M1 以及 XCode v12.5BigSur OS 中。所以请继续将这些事情牢记在心。

为此,我不得不做这些事情:

  • 从 Mac 中完全卸载 XCode。为了有效地做到这一点,考虑到 XCode 确实在 Mac 上缓存了很多东西,请使用 Mac App Cleaner. If by any chance, you have just removed the XCode without using the link, then use this Completely remove Xcode from Mac.
  • 从该资源 XCode Releases 安装 XCode请注意:这是将您直接带到 Apple's download pages 的合法来源,没有不可靠的东西。因此,您可以继续下载 XCode 以前的稳定版本 您的应用在其中运行良好
  • 请注意:App Store 安装 XCode 将再次安装最新版本的 XCode,这是错误的 v12.5.所以请不要从 Apple Store 下载和安装相同的内容。仅使用上述来源以获得最佳效果。
  • 下载文件后安装。请务必遵循此 Setting up development environment React Native,以避免发生任何意外。
  • 运行 再次应用。

它对你有用,就像对我有用一样,现在我正在继续我的项目工作,没有任何麻烦。干杯!