如何修复Ruby与CocoaPods的架构不兼容LoadError问题?
解决Ruby架构不兼容导致的CocoaPods错误
执行任何操作都会输出以下错误日志:
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': dlopen(/Library/Ruby/Gems/2.6.0/gems/date-3.2.2/lib/date_core.bundle, 0x0009): tried: '/Library/Ruby/Gems/2.6.0/gems/date-3.2.2/lib/date_core.bundle' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')) - /Library/Ruby/Gems/2.6.0/gems/date-3.2.2/lib/date_core.bundle (LoadError) from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /Library/Ruby/Gems/2.6.0/gems/date-3.2.2/lib/date.rb:4:in `<top (required)>' from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/time.rb:3:in `<top (required)>' from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /usr/local/Cellar/cocoapods/1.11.3/libexec/gems/activesupport-6.1.5/lib/active_support/xml_mini.rb:3:in `<top (required)>' from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /usr/local/Cellar/cocoapods/1.11.3/libexec/gems/activesupport-6.1.5/lib/active_support/core_ext/array/conversions.rb:3:in `<top (required)>' from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /usr/local/Cellar/cocoapods/1.11.3/libexec/gems/cocoapods-1.11.3/lib/cocoapods.rb:9:in `<top (required)>' from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /usr/local/Cellar/cocoapods/1.11.3/libexec/gems/cocoapods-1.11.3/bin/pod:36:in `<top (required)>' from /usr/local/Cellar/cocoapods/1.11.3/libexec/bin/pod:23:in `load' from /usr/local/Cellar/cocoapods/1.11.3/libexec/bin/pod:23:in `<main>'
新建项目能正常部署到iOS模拟器,但所有旧项目都出现这个问题,以下是解决步骤:
解决步骤
1. 卸载冲突的date gem
额外安装的date-3.2.2是x86_64架构,和你的arm64e芯片不兼容,直接卸载:
sudo gem uninstall date -v 3.2.2
系统自带的date库已经适配arm架构,无需额外安装第三方版本。
2. 重新安装适配arm架构的CocoaPods
先清理现有CocoaPods:
brew uninstall cocoapods sudo gem uninstall cocoapods
然后用Homebrew重新安装适配arm的版本:
brew install cocoapods
如果还是有问题,推荐用Ruby版本管理器安装arm版Ruby后再装CocoaPods:
# 安装rbenv brew install rbenv # 安装适配arm的Ruby版本(比如3.2.2) rbenv install 3.2.2 # 设置全局Ruby版本 rbenv global 3.2.2 # 安装CocoaPods gem install cocoapods
3. 清理旧项目的Pod缓存
进入旧项目目录,执行以下命令重置Pod依赖:
pod deintegrate rm -rf Podfile.lock rm -rf ~/Library/Caches/CocoaPods rm -rf ~/.cocoapods pod install
内容的提问来源于stack exchange,提问作者Race car
相关产品推荐
相关产品推荐

