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

问题描述 投票:0回答:2

这个问题最近才开始发生,对我来说很新鲜。以前,我的应用程序通过运行此命令

react-native run-ios
在 iOS 模拟器上运行良好。现在我已经做了很多研究并让我的应用程序通过 XCode 运行。但不知何故,当应用程序通过 XCode 运行时,metro 捆绑程序并未链接。

我尝试通过

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:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
  • 不明白Ld这个词,它列在“构建失败”

我所做的如下:

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

我现在别无选择,正在等待给出一些见解。看到从未产生问题的事情上出现错误确实令人沮丧。我正在使用 Apple M1 芯片 Macbook。

更新V1.0

  • 我尝试从
    use_flipper!()
    注释掉
    /ios/Podfile
    ,然后重新做同样的事情,比如删除
    Pods
    Podfile.lock
    。运行这个命令,
    pod update && pod install && cd.. && npm run ios
    。遇到多个问题。我不知道 Apple M1 上的 XCode 和 React Native 存在什么问题。

更新V2.0

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

希望能给像我一样困惑的开发者一些启发。请看一下,看起来

Facebook
正在修复它,但不知道什么时候。一定要注意一下:/

ios xcode react-native build-error apple-m1
2个回答
1
投票

为了让我的应用程序像以前一样再次运行,我所做的一件棘手的事情是将 XCode 版本降级到之前的稳定版本,即版本 12.4。我后来知道了这个问题,因为,

XCode
强制更新了我的版本,这对我已经存在的项目开始表现得很奇怪。因此,我看到的唯一可行的选择是将版本降级到以前的版本,并且一切都像以前一样工作

请注意: 此问题主要存在于

Apple M1
以及
XCode v12.5
BigSur OS
。因此,请继续将这些事情牢记在心。

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

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

0
投票

我猜测所有第三方 Pod 都需要更新其 RN Pod 规格才能使用

XCFrameworks
。这就是我刚刚所做的,看起来效果不错。

这意味着,作为 RN 软件包用户,您要么需要等待软件包作者更新其 podspecs 以使用

XCFrameworks
,要么添加排除“arm64”架构的构建配置(但随后将无法在M1 mac)。

或者,您可以访问

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

© www.soinside.com 2019 - 2024. All rights reserved.