React Native pod 在 Apple Silicon (M1) 上安装失败

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

我收到了带有 M1 芯片的新 Macbook Pro。

我尝试运行我的 React Native 项目,但卡在 pod install 上。

之后,我创建了一个空项目并尝试,仍然遇到相同的错误。

### Command

```
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/bin/pod install
```

### Report

* What did you do?

* What did you expect to happen?

* What happened instead?


### Stack

```
   CocoaPods : 1.10.1
        Ruby : ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.arm64e-darwin20]
    RubyGems : 3.0.3
        Host : macOS 11.0.1 (20B29)
       Xcode : 12.4 (12D4e)
         Git : git version 2.24.3 (Apple Git-128)
Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib
Repositories : 
```

### Plugins

```
cocoapods-deintegrate : 1.0.4
cocoapods-plugins     : 1.0.0
cocoapods-search      : 1.0.0
cocoapods-trunk       : 1.5.0
cocoapods-try         : 1.2.0
```

### Podfile

```ruby
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

platform :ios, '10.0'

target 'temp2' do
  config = use_native_modules!

  use_react_native!(:path => config["reactNativePath"])

  target 'temp2Tests' do
    inherit! :complete
    # Pods for testing
  end

  # Enables Flipper.
  #
  # Note that if you have use_frameworks! enabled, Flipper will not work and
  # you should disable these next few lines.
  use_flipper!
  post_install do |installer|
    flipper_post_install(installer)
  end
end

target 'temp2-tvOS' do
  # Pods for temp2-tvOS

  target 'temp2-tvOSTests' do
    inherit! :search_paths
    # Pods for testing
  end
end
```

### Error

```
LoadError - dlopen(/Library/Ruby/Gems/2.6.0/gems/ffi-1.14.2/lib/ffi_c.bundle, 0x0009): missing compatible arch in /Library/Ruby/Gems/2.6.0/gems/ffi-1.14.2/lib/ffi_c.bundle - /Library/Ruby/Gems/2.6.0/gems/ffi-1.14.2/lib/ffi_c.bundle
/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/ffi-1.14.2/lib/ffi.rb:6:in `rescue in <top (required)>'
/Library/Ruby/Gems/2.6.0/gems/ffi-1.14.2/lib/ffi.rb:3: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/ethon-0.12.0/lib/ethon.rb:2: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/typhoeus-1.4.0/lib/typhoeus.rb:2: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'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/sources_manager.rb:74:in `cdn_url?'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/sources_manager.rb:36:in `create_source_with_url'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/sources_manager.rb:21:in `find_or_create_source_with_url'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/installer/analyzer.rb:178:in `block in sources'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/installer/analyzer.rb:177:in `map'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/installer/analyzer.rb:177:in `sources'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/installer/analyzer.rb:1073:in `block in resolve_dependencies'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/user_interface.rb:64:in `section'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/installer/analyzer.rb:1072:in `resolve_dependencies'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/installer/analyzer.rb:124:in `analyze'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/installer.rb:414:in `analyze'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/installer.rb:239:in `block in resolve_dependencies'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/user_interface.rb:64:in `section'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/installer.rb:238:in `resolve_dependencies'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/installer.rb:160:in `install!'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/command/install.rb:52:in `run'
/Library/Ruby/Gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/lib/cocoapods/command.rb:52:in `run'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/gems/cocoapods-1.10.1/bin/pod:55:in `<top (required)>'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/bin/pod:23:in `load'
/opt/homebrew/Cellar/cocoapods/1.10.1/libexec/bin/pod:23:in `<main>'
```

――― TEMPLATE END ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

[!] Oh no, an error occurred.

Search for existing GitHub issues similar to yours:
https://github.com/CocoaPods/CocoaPods/search?q=dlopen%28%2FLibrary%2FRuby%2FGems%2F2.6.0%2Fgems%2Fffi-1.14.2%2Flib%2Fffi_c.bundle%2C+0x0009%29%3A+missing+compatible+arch+in+%2FLibrary%2FRuby%2FGems%2F2.6.0%2Fgems%2Fffi-1.14.2%2Flib%2Fffi_c.bundle+-+%2FLibrary%2FRuby%2FGems%2F2.6.0%2Fgems%2Fffi-1.14.2%2Flib%2Fffi_c.bundle&type=Issues

If none exists, create a ticket, with the template displayed above, on:
https://github.com/CocoaPods/CocoaPods/issues/new

Be sure to first read the contributing guide for details on how to properly submit a ticket:
https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md

Don't forget to anonymize any private data!

Looking for related issues on cocoapods/cocoapods...
 - Couldn't determine repo type for URL: `https://cdn.cocoapods.org/`: Invalid ABI specified
   https://github.com/CocoaPods/CocoaPods/issues/10368 [open] [2 comments]
   a week ago

 - CocoaPods compatibility with Apple DTK (Apple Silicon)
   https://github.com/CocoaPods/CocoaPods/issues/9907 [open] [75 comments]
   15 hours ago

 - Firebase installation error on xcode 12 com m1 processor
   https://github.com/CocoaPods/CocoaPods/issues/10329 [closed] [4 comments]
   12 hours ago

and 3 more at:
https://github.com/cocoapods/cocoapods/search?q=dlopen%28%2FLibrary%2FRuby%2FGems%2F2.6.0%2Fgems%2Fffi-1.14.2%2Flib%2Fffi_c.bundle%2C%200x0009%29%3A%20missing%20compatible%20arch%20in%20%2FLibrary%2FRuby%2FGems%2F2.6.0%2Fgems%2Fffi-1.14.2%2Flib%2Fffi_c.bundle%20-%20%2FLibrary%2FRuby%2FGems%2F2.6.0%2Fgems%2Fffi-1.14.2%2Flib%2Fffi_c.bundle&type=Issues&utf8=✓

在我对这个主题进行研究后,我找到了几种解决方案,但我的问题仍然没有解决。

我已经尝试安装

sudo gem install ffi

然后再次尝试pod install。仍然出现同样的错误。

之后根据我的研究,有人说使用带有 Rosetta 的终端或 Rosetta 的另一种方式,

sudo arch -x86_64 gem install ffi
arch -x86_64 pod install

使用这些基于英特尔的安装尝试我收到以下错误:

Analyzing dependencies
Fetching podspec for `DoubleConversion` from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`
Fetching podspec for `Folly` from `../node_modules/react-native/third-party-podspecs/Folly.podspec`
Fetching podspec for `glog` from `../node_modules/react-native/third-party-podspecs/glog.podspec`
[!] Couldn't determine repo type for URL: `https://cdn.cocoapods.org/`: Invalid ABI specified

有人遇到过这个问题吗?我做错了什么或者我需要做什么才能运行我的项目?

react-native cocoapods apple-silicon apple-m1
13个回答
13
投票

对于自制软件用户

步骤 1

brew install cocoapods
步骤2
sudo arch -x86_64 gem install ffi
步骤 3
arch -x86_64 pod install

解决了我的问题


10
投票

我的 ffi 问题仅通过

brew install cocoapods
=)

就解决了

首先我尝试从

bundler
安装,有一个特定的旧版本的cocoapods还不支持m1;然后我用了brew,现在用最新的cocoapods它工作得很好


4
投票

我的问题是使用

gem
安装 cocoapods (大多数在线教程都会告诉你)。尝试使用以下命令卸载 cocoapods:

gem uninstall cocoapods

然后使用brew再次安装

brew install cocoapods

homebrew安装了arm64版本,而gem似乎默认为其他版本。


3
投票

此资源帮助了我:https://www.lopau.com/error-running-cocoapod-pod-install-on-big-sur-with-ffi/

奔跑

sudo gem inst ffi -- --disable-system-libffi


2
投票

我意识到自制软件安装弄乱了 cocoapods。

简单来说,我卸载了自制程序并从头开始。然后就成功了。


1
投票

这对我有用:(M1 Pro)

arch -x86_64 sudo gem install cocoapods
arch -x86_64 pod repo update
arch -x86_64 pod install

来源:https://github.com/CocoaPods/CocoaPods/issues/10349


0
投票

我在 M1 芯片的 MacBook 上遇到了同样的问题。最后做了下面的事情

在罗塞塔终端:

-- sudo rm -rf ~/.cocoapods/repos

iOS 文件夹内

pod install

0
投票

我的解决方案是像这样初始化应用程序

arch -x86_64 npx react-native init awsomeproject

0
投票

从 App Store 安装最新版本的 Xcode,然后在终端中运行这两个命令:

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch

0
投票

就我而言,问题是 CocoaPod Flipper 已经过时了。 pod 文件中的更改来自

 use_flipper()!

use_flipper!({ 'Flipper' => '0.95.0', 'Flipper-Folly' => '2.6.7', 'Flipper-RSocket' => '1.4.3', 'Flipper-DoubleConversion' => '3.1.7', 'Flipper-Glog' => '0.3.9', 'Flipper-PeerTalk' => '0.0.4' })

帮助了我。


0
投票

Mac M1 架构不直接兼容 Cocoapods。如果您在安装 pod 时遇到问题,可以通过运行来解决:

  • sudo arch -x86_64 gem install ffi

  • arch -x86_64 pod install

这些命令安装

ffi
包,加载动态链接库并让您正确运行
pod install
,并使用正确的架构运行
pod install


0
投票

对我来说,这个命令有效

arch -x86_64 pod install


0
投票

XCode 破坏了安装

npm ERR! Couldn't install Pods. Updating the Pods project and trying again...
npm ERR! Command `pod install` failed.
npm ERR! └─ Cause: /bin/bash -c 

所以我通过运行重置了 XCode 命令行工具

sudo xcode-select --reset

希望它也能帮助别人)

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