繁体   English   中英

对于 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 运行时,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 行错误。 我选择了有一些奶油部分的错误。 从错误中挑选一些关键词:

  • ld:未找到架构 x86_64 的符号
  • clang:错误:linker 命令失败,退出代码为 1(使用 -v 查看调用)
  • 不理解Ld一词,它列在 BUILD FAILED 下

我所做的如下:

  1. 删除 node_modules、Pod。 从 XCode 清理构建。 运行npm install然后cd ios && pod install然后运行命令react-native run-ios
  2. 删除 Pod,Podfile.lock。 是否pod install ,然后在 root 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排除架构中添加了 arm64。 请注意,这使我能够在 XCode 上成功build and run应用程序。 但它不会连接到 Metro 捆绑器服务器。 看起来它只运行发布模式
  3. 将我的 package 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

我现在没有选择,等待给出一些见解。 看到从未造成问题的事物出现错误确实令人沮丧。 我正在使用 Apple M1 芯片 Macbook。

更新V1.0

  • 我尝试从/ios/Podfile中注释掉use_flipper!() ,然后重新执行相同的操作,例如删除PodsPodfile.lock 运行此命令, pod update && pod install && cd.. && npm run ios 遇到多个问题。 我不知道 XCode 和 Apple M1 上的 React Native 有什么问题。

更新V2.0

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

我希望这可以给像我一样困惑的开发人员一些见解。 请看一下,看起来Facebook正在修复它,但不知道什么时候。 必须关注它:/

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

请注意:此问题主要存在于Apple M1以及XCode v12.5BigSur OS中。 所以 go 提前记住这些事情。

为此,我必须做这些事情:

  • 从 Mac 上完全卸载XCode 为了有效地做到这一点,考虑到XCode确实在您的 Mac 上缓存了很多东西,请使用Mac App Cleaner 如果有任何机会,您刚刚删除了XCode 而没有使用链接,那么使用这个Completely remove Xcode from Mac
  • 从此资源XCode Releases安装XCode 请注意:这是一个合法的来源,可以直接带你到Apple's download pages ,没有不可靠的东西。 因此,您可以提前 go 并下载XCode先前稳定版本您的应用程序可以正常工作
  • 请注意:App Store安装 XCode 将再次安装最新版本的 XCode,这是有缺陷的v12.5 所以请不要从Apple Store下载和安装相同的内容。 仅使用上述来源以获得最佳效果。
  • 下载文件时安装它。 确保您遵循此设置开发环境 React Native ,以避免任何意外。
  • 再次运行应用程序。

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

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

这意味着您,作为 RN package 用户,您要么需要等待 package 作者更新他们的 podspecs 以使用XCFrameworks ,要么添加排除“arm64”架构的构建配置(但随后将无法在 M1 macs 上工作) .

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM