这个问题最近才开始发生,对我来说很新鲜。以前,我的应用程序通过运行此命令
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 行错误。我选择了有一些奶油部分的错误。从错误中挑选一些关键词:
我所做的如下:
npm install
,然后运行 cd ios && pod install
,然后运行命令 react-native run-ios
pod install
,然后在根部react-native run-ios
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
react-native run-ios
build and run
应用程序成功。但它不会连接到 Metro 捆绑服务器。看起来它只运行 release 模式。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
正在修复它,但不知道什么时候。一定要注意一下:/
为了让我的应用程序像以前一样再次运行,我所做的一件棘手的事情是将 XCode 版本降级到之前的稳定版本,即版本 12.4。我后来知道了这个问题,因为,
XCode
强制更新了我的版本,这对我已经存在的项目开始表现得很奇怪。因此,我看到的唯一可行的选择是将版本降级到以前的版本,并且一切都像以前一样工作。
请注意: 此问题主要存在于
Apple M1
以及 XCode v12.5
和 BigSur OS
。因此,请继续将这些事情牢记在心。
为此,我必须做这些事情:
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
下载并安装相同的内容。仅使用上述来源以获得最佳结果。我猜测所有第三方 Pod 都需要更新其 RN Pod 规格才能使用
XCFrameworks
。这就是我刚刚所做的,看起来效果不错。
这意味着,作为 RN 软件包用户,您要么需要等待软件包作者更新其 podspecs 以使用
XCFrameworks
,要么添加排除“arm64”架构的构建配置(但随后将无法在M1 mac)。
或者,您可以访问
node_modules/<package>/thrid-party.podspec
并自行更新。但这意味着您也需要自己构建 XCFrameworks
。所以......