美文网首页
Cocoapods 1.12.1搭配ruby-3.2.2的pod

Cocoapods 1.12.1搭配ruby-3.2.2的pod

作者: EvenTime | 来源:发表于2023-05-11 16:31 被阅读0次

    最近升级了Cocoapods到1.12.1,由于更改了Cocoapods的安装方式,原来是使用sudo gem命令安装的,现如今采用了Homebrew安装管理Cocoapods,毕竟早就不推荐不应该使用sudo gem方式安装了,于是出现了以下错误,项目是老版本的flutter创建的,由于某些原因,一直没有升级到更新的flutter版本

    [!] Invalid `Podfile` file: undefined method `exists?' for File:Class.
     #  from /Users/tok/Documents/flutter/Gk-Flutter-Demo/ios/Podfile:35
     #  -------------------------------------------
     #  
     >    flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
     #  end
     #  -------------------------------------------
    

    出现该报错的根本原因是ruby3.2.2中没有了File:Class中没有了exists方法,由于我们的Cocoapods是用Homebrew安装的,使用命令
    brew install cocoapods
    这种方式会自动捆绑安装一个现阶段使用较多的版本,也就是安装了一个最新的ruby-3.2.2版本,显而易见,如此我们是无法在该工程pod成功的

    解决方式

    1. 最简单的方式,本来应该也是flutter SDK兼容的问题,这个问题跟Apple,Cocoapods都没什么关系,所以直接找到了兼容方式,在我们flutter安装的路径下找到这个ruby文件/packages/flutter_tools/bin/podhelper.rb
      return [] unless File.exists? file_path
      修改成
      return [] unless File.exist? file_path
      即可,也许在更高的flutter版本中官方修复了该问题,笔者并没有去尝试

    2. 卸载当前的Cocoapods,使用gem方式安装,该方式可以使用老的ruby版本,同样能解决该问题,但显然不是我想要的,如果你本来就是这个方式,在没有升级ruby到3.2.2的情况下,安装到1.12.1的Cocoapods版本根本不会发现该问题;如果就是使用的ruby-3.2.2,可以切到老的ruby版本即可

    3. 在你项目的根目录下,创建.ruby-versionGemfile配置文件,
      .ruby-version:
      3.0.0
      Gemfile:

      source 'https://rubygems.org'
      You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
      ruby File.read(File.join(__dir__, '.ruby-version')).strip
      gem 'cocoapods', '~> 1.12'
      

      安装ruby版本管理

      brew install rbenv ruby-build # install ruby ver. manager
      rbenv init                    # load rbenv in your shell
      # ^^^follow instructions after re-run terminal!!! 
      rbenv install 3.0.0           # install required Ruby version
      

      安装gem

      cd your/rn_project/folder
      rbenv local     # switch to 3.0.0 ruby version
      bundler install # install gem deps
      

      最后pod

      cd ios
      bundler exec pod install
      

      这种方式也是比较推荐的,在多人协作的情况下,为了环境的一致性,通常会使用该方式来配置,而且也不用去修改源码

    相关文章

      网友评论

          本文标题:Cocoapods 1.12.1搭配ruby-3.2.2的pod

          本文链接:https://www.haomeiwen.com/subject/zmvssdtx.html