M1芯片Mac安装Pods报错:需安装cocoapods-keys插件
M1芯片BigSur系统下CocoaPods-keys插件编译失败问题解决
环境信息
- M1芯片Mac
- macOS BigSur
- Xcode 13.2.1
- Ruby 2.6.3p62
- Brew 3.5.5
问题现象
安装cocoapods-keys插件后执行pod install,出现以下错误:
Error loading plugin file
/Library/Ruby/Gems/2.6.0/gems/cocoapods-keys-2.2.1/lib/cocoapods_plugin.rb.
完整编译错误日志:
CompilationError - error executing "xcrun clang -dynamic -bundle -undefined dynamic_lookup -multiply_defined suppress -g -Os -pipe -DHAVE_GCC_ATOMIC_BUILTINS -DUSE_FFI_CLOSURE_ALLOC -L. -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.6.Internal.sdk/usr/local/lib -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0 -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin20 -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include -L/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib -o \"/Users/kasunka/.ruby_inline/ruby-2.6.0/Inline_OSXKeychain_5b2f8d1cd1bde9c4ff3fea49f09cd5c1.bundle\" \"/Users/kasunka/.ruby_inline/ruby-2.6.0/Inline_OSXKeychain_5b2f8d1cd1bde9c4ff3fea49f09cd5c1.c\" -lc -framework Security -framework CoreFoundation -framework CoreServices ": pid 3611 exit 1 Renamed /Users/kasunka/.ruby_inline/ruby-2.6.0/Inline_OSXKeychain_5b2f8d1cd1bde9c4ff3fea49f09cd5c1.c to /Users/kasunka/.ruby_inline/ruby-2.6.0/Inline_OSXKeychain_5b2f8d1cd1bde9c4ff3fea49f09cd5c1.c.bad /Library/Ruby/Gems/2.6.0/gems/RubyInline-3.12.6/lib/inline.rb:616:in `build' /Library/Ruby/Gems/2.6.0/gems/RubyInline-3.12.6/lib/inline.rb:854:in `inline' /Library/Ruby/Gems/2.6.0/gems/osx_keychain-1.0.2/lib/osx_keychain.rb:17:in `<class:OSXKeychain>' /Library/Ruby/Gems/2.6.0/gems/osx_keychain-1.0.2/lib/osx_keychain.rb:6:in `<top (required)>' /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' /Library/Ruby/Gems/2.6.0/gems/cocoapods-keys-2.2.1/lib/keyring.rb:1:in `<top (required)>' /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `require' /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `rescue in require' /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34:in `require' /Library/Ruby/Gems/2.6.0/gems/cocoapods-keys-2.2.1/lib/cocoapods_plugin.rb:1:in `<top (required)>' /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require' /usr/local/Cellar/cocoapods/1.11.3/libexec/gems/claide-1.1.0/lib/claide/command/plugin_manager.rb:92:in `block in safe_require' /usr/local/Cellar/cocoapods/1.11.3/libexec/gems/claide-1.1.0/lib/claide/command/plugin_manager.rb:90:in `each' /usr/local/Cellar/cocoapods/1.11.3/libexec/gems/claide-1.1.0/lib/claide/command/plugin_manager.rb:90:in `safe_require' /usr/local/Cellar/cocoapods/1.11.3/libexec/gems/claide-1.1.0/lib/claide/command/plugin_manager.rb:31:in `block in load_plugins' /usr/local/Cellar/cocoapods/1.11.3/libexec/gems/claide-1.1.0/lib/claide/command/plugin_manager.rb:30:in `map' /usr/local/Cellar/cocoapods/1.11.3/libexec/gems/claide-1.1.0/lib/claide/command/plugin_manager.rb:30:in `load_plugins' /usr/local/Cellar/cocoapods/1.11.3/libexec/gems/claide-1.1.0/lib/claide/command.rb:326:in `block in run' /usr/local/Cellar/cocoapods/1.11.3/libexec/gems/claide-1.1.0/lib/claide/command.rb:325:in `each' /usr/local/Cellar/cocoapods/1.11.3/libexec/gems/claide-1.1.0/lib/claide/command.rb:325:in `run' /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/lib/cocoapods/command.rb:52:in `run' /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.3/bin/pod:55:in `<top (required)>' /usr/local/Cellar/cocoapods/1.11.3/libexec/bin/pod:23:in `load' /usr/local/Cellar/cocoapods/1.11.3/libexec/bin/pod:23:in `<main>'
解决方案
方法1:统一Xcode SDK版本
日志显示同时调用了MacOSX11.6和MacOSX12.1两个SDK,导致编译冲突,执行以下命令修复:
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer export SDKROOT=$(xcrun --show-sdk-path) gem uninstall cocoapods-keys osx_keychain RubyInline gem install cocoapods-keys
方法2:用Rosetta终端运行命令
M1芯片的架构兼容问题可通过Rosetta绕过:
- 找到「终端」应用,右键选择「显示简介」
- 勾选「使用Rosetta打开」,重启终端
- 重新安装插件:
gem uninstall cocoapods-keys gem install cocoapods-keys pod install
方法3:升级osx_keychain依赖
cocoapods-keys 2.2.1依赖的osx_keychain 1.0.2存在M1兼容性问题,手动安装修复版本:
gem uninstall osx_keychain gem install osx_keychain -v 1.0.3 pod install
方法4:用rbenv管理Ruby版本(彻底解决环境冲突)
系统Ruby易出现权限和兼容性问题,用rbenv安装适配M1的Ruby版本:
brew install rbenv ruby-build rbenv install 2.7.6 rbenv global 2.7.6 echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc # 若使用bash则改为~/.bash_profile source ~/.zshrc gem install cocoapods cocoapods-keys pod install
内容的提问来源于stack exchange,提问作者KZoNE
相关产品推荐
相关产品推荐

