Expo Go项目无法接入Firebase,切换React Native CLI遇Gem构建错误求助
问题解决:Expo Go接入Firebase + React Native CLI环境错误修复
一、优先方案:在现有Expo Go项目中接入Firebase
Expo Go完全支持Firebase集成,无需切换到React Native CLI,步骤如下:
- 安装所需的Firebase Expo库(按需选择):
expo install expo-firebase-app expo-firebase-auth expo-firebase-firestore - 前往Firebase控制台创建项目,下载对应平台的配置文件:
- iOS:
GoogleService-Info.plist,放在项目根目录 - Android:
google-services.json,放在项目根目录
- iOS:
- 修改项目根目录的
app.json,添加平台配置:{ "expo": { "ios": { "googleServicesFile": "./GoogleService-Info.plist", "bundleIdentifier": "你的iOS包名" }, "android": { "googleServicesFile": "./google-services.json", "package": "你的Android包名" } } } - 在项目代码中初始化Firebase:
import { initializeApp } from 'expo-firebase-app'; // 若已配置googleServicesFile,无需手动传入config initializeApp();
二、React Native CLI环境错误修复(ffi安装失败)
从错误日志看,核心问题有两个:项目路径包含空格导致make命令解析失败,以及系统缺少libffi依赖。解决步骤:
迁移项目到无空格路径
原路径/Users/jonnywerthman/Desktop/Dev stuff/...中的空格会导致shell命令解析错误,将项目移动到类似/Users/jonnywerthman/Desktop/DevStuff/personal/90dayz/Dayz90的路径下。安装系统级libffi依赖
brew install libffi配置环境变量让Ruby找到libffi
export LDFLAGS="-L$(brew --prefix libffi)/lib" export CPPFLAGS="-I$(brew --prefix libffi)/include" export PKG_CONFIG_PATH="$(brew --prefix libffi)/lib/pkgconfig"重新安装依赖
gem install bundler bundle install gem install cocoapods若仍有问题,重新编译Ruby并指定libffi路径
rvm get stable rvm reinstall 2.7.5 --with-libffi-dir=$(brew --prefix libffi)
完整错误信息
Installing dependencies ✔ CocoaPods (https://cocoapods.org/) is not installed. CocoaPods is necessary for the iOS project to run correctly. Do you want to install it? › Yes, with gem (may require sudo) ✔ Installing CocoaPods ✖ Installing Bundler error Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/jonnywerthman/Desktop/Dev stuff/personal/90dayz/Dayz90/vendor/bundle/ruby/2.7.0/gems/ffi-1.15.5/ext/ffi_c /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/bin/ruby -I /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0 -r ./siteconf20221226-91293-hikzkd.rb extconf.rb checking for ffi_prep_closure_loc() in -lffi... no checking for ffi_prep_closure_loc() in -llibffi... no checking for ffi_prep_closure_loc() in -llibffi-8... no checking for whether -Wl,--exclude-libs,ALL is accepted as LDFLAGS... no checking for whether -pthread is accepted as LDFLAGS... yes creating extconf.h creating Makefile current directory: /Users/jonnywerthman/Desktop/Dev stuff/personal/90dayz/Dayz90/vendor/bundle/ruby/2.7.0/gems/ffi-1.15.5/ext/ffi_c make "DESTDIR=" clean current directory: /Users/jonnywerthman/Desktop/Dev stuff/personal/90dayz/Dayz90/vendor/bundle/ruby/2.7.0/gems/ffi-1.15.5/ext/ffi_c make "DESTDIR=" /bin/sh: -c: line 0: unexpected EOF while looking for matching `"' /bin/sh: -c: line 1: syntax error: unexpected end of file make: *** ["/Users/jonnywerthman/Desktop/Dev] Error 2 make failed, exit code 2 Gem files will remain installed in /Users/jonnywerthman/Desktop/Dev stuff/personal/90dayz/Dayz90/vendor/bundle/ruby/2.7.0/gems/ffi-1.15.5 for inspection. Results logged to /Users/jonnywerthman/Desktop/Dev stuff/personal/90dayz/Dayz90/vendor/bundle/ruby/2.7.0/extensions/x86_64-darwin-22/2.7.0/ffi-1.15.5/gem_make.out /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/ext/builder.rb:99:in `run' /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/ext/builder.rb:51:in `block in make' /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/ext/builder.rb:43:in `each' /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/ext/builder.rb:43:in `make' /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/ext/ext_conf_builder.rb:63:in `block in build' /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/tempfile.rb:291:in `open' /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/ext/ext_conf_builder.rb:30:in `build' /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/ext/builder.rb:169:in `block in build_extension' /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/ext/builder.rb:165:in `synchronize' /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/ext/builder.rb:165:in `build_extension' /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/ext/builder.rb:210:in `block in build_extensions' /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/ext/builder.rb:207:in `each' /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/ext/builder.rb:207:in `build_extensions' /Users/jonnywerthman/.rvm/rubies/ruby-2.7.5/lib/ruby/2.7.0/rubygems/installer.rb:844:in `build_extensions' /Users/jonnywerthman/.rvm/gems/ruby-2.7.5/gems/bundler-2.4.1/lib/bundler/rubygems_gem_installer.rb:72:in `build_extensions' /Users/jonnywerthman/.rvm/gems/ruby-2.7.5/gems/bundler-2.4.1/lib/bundler/rubygems_gem_installer.rb:28:in `install' /Users/jonnywerthman/.rvm/gems/ruby-2.7.5/gems/bundler-2.4.1/lib/bundler/source/rubygems.rb:200:in `install' /Users/jonnywerthman/.rvm/gems/ruby-2.7.5/gems/bundler-2.4.1/lib/bundler/installer/gem_installer.rb:54:in `install' /Users/jonnywerthman/.rvm/gems/ruby-2.7.5/gems/bundler-2.4.1/lib/bundler/installer/gem_installer.rb:16:in `install_from_spec' /Users/jonnywerthman/.rvm/gems/ruby-2.7.5/gems/bundler-2.4.1/lib/bundler/installer/parallel_installer.rb:155:in `do_install' /Users/jonnywerthman/.rvm/gems/ruby-2.7.5/gems/bundler-2.4.1/lib/bundler/installer/parallel_installer.rb:146:in `block in worker_pool' /Users/jonnywerthman/.rvm/gems/ruby-2.7.5/gems/bundler-2.4.1/lib/bundler/worker.rb:62:in `apply_func' /Users/jonnywerthman/.rvm/gems/ruby-2.7.5/gems/bundler-2.4.1/lib/bundler/worker.rb:57:in `block in process_queue' /Users/jonnywerthman/.rvm/gems/ruby-2.7.5/gems/bundler-2.4.1/lib/bundler/worker.rb:54:in `loop' /Users/jonnywerthman/.rvm/gems/ruby-2.7.5/gems/bundler-2.4.1/lib/bundler/worker.rb:54:in `process_queue' /Users/jonnywerthman/.rvm/gems/ruby-2.7.5/gems/bundler-2.4.1/lib/bundler/worker.rb:90:in `block (2 levels) in create_threads' An error occurred while installing ffi (1.15.5), and Bundler cannot continue. In Gemfile: cocoapods was resolved to 1.11.3, which depends on cocoapods-core was resolved to 1.11.3, which depends on typhoeus was resolved to 1.4.0, which depends on ethon was resolved to 0.16.0, which depends on ffi ✖ Installing Bundler error Error: Looks like your iOS environment is not properly set. Please go to https://reactnative.dev/docs/next/environment-setup and follow the React Native CLI QuickStart guide for macOS and iOS. Error: Error: Looks like your iOS environment is not properly set. Please go to https://reactnative.dev/docs/next/environment-setup and follow the React Native CLI QuickStart guide for macOS and iOS. at createFromTemplate (/Users/jonnywerthman/node_modules/@react-native-community/cli/build/commands/init/init.js:169:11) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async Object.initialize [as func] (/Users/jonnywerthman/node_modules/@react-native-community/cli/build/commands/init/init.js:222:3) at async Command.handleAction (/Users/jonnywerthman/node_modules/@react-native-community/cli/build/index.js:140:9)
内容的提问来源于stack exchange,提问作者thefreakymamba
相关产品推荐
相关产品推荐

