如何在 macOS 上同时使用 Flutter2 和 Flutter3 进行 ios 开发

如何在 macOS 上同时使用 Flutter2 和 Flutter3 进行 ios 开发

<img src="https://upload-images.jianshu.io/upload_images/4489342-7971d3551fc49455.png" style="width:90%;" />

前言

猫哥主打系统环境是:

  • macos
  • flutter 3.7.12
  • ruby 3.2.2
  • cocoapods 1.12.1
  • xcode 14.3.1

这套配置运行最新的项目没问题,但是最近需要维护 flutter 2.10.5 这种老项目,虽然用了 fvm 进行 flutter 版本切换,但是 flutter 2.10.5 用的 ruby 2 ,我当前是 ruby 3 所以运行 pod install 的时候就报错了。

[!] Invalid `Podfile` file: undefined method `exists?' for File:Class.

 #  from /Users/ducafecat/Documents/project-2021/helber_v2/helber_v2_flutter_210/ios/Podfile:34
 #  -------------------------------------------
 #
 >    flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
 #
 #  -------------------------------------------

这个错误很常见,因为 ruby 3 的 api 接口有变化。

今天就来说说我是怎么解决的,我是需要灵活切换旧版、新版的 IOS 开发环境。

原文 https://ducafecat.com/blog/011-flutter-macos-rvm-cocoapods-fvm

参考

https://www.moncefbelyamani.com/how-to-install-xcode-homebrew-git-rvm-ruby-on-mac/

https://www.moncefbelyamani.com/why-you-should-never-use-sudo-to-install-ruby-gems/

https://www.phusionpassenger.com/library/walkthroughs/deploy/ruby/ownserver/nginx/oss/install_language_runtime.html

https://blog.driftingruby.com/articles/2023/03/04/ruby-with-yjit.html

https://github.com/rvm/rvm

https://rvm.io/rvm/install

https://brew.sh/

https://cocoapods.org/

rvm 知识点

RVM(Ruby Version Manager)是一个用于管理 Ruby 版本的工具,它可以让您在同一台机器上安装和使用多个 Ruby 版本,并且可以为每个 Ruby 版本提供独立的 gem 环境。以下是 RVM 的一些优点:

  1. 多版本管理:使用 RVM,您可以轻松地在同一台机器上安装和管理多个 Ruby 版本。这对于开发人员来说非常有用,因为不同的项目可能需要不同的 Ruby 版本或 gem 包。

  2. gem 环境隔离:RVM 可以为每个 Ruby 版本提供独立的 gem 环境,以避免不同版本之间的 gem 包冲突。这意味着您可以在不同的 gem 环境中安装和管理 gem 包,而不会相互干扰。

  3. 简单易用:RVM 提供了一组简单易用的命令,使您可以轻松地安装、卸载、切换和管理 Ruby 版本、gem 包和 gemset。

  4. 社区支持:RVM 是一个流行的 Ruby 工具,拥有活跃的社区支持和开发团队,可以及时解决问题和更新版本。

  5. 跨平台支持:RVM 支持多种操作系统,包括 macOS、Linux 和 Windows,使您可以在不同的平台上使用相同的工具和环境。

思路

我尝试了些方法,过程如下:

  • 删除本机各种 ruby cocoapods 工具
  • 安装最新版 ruby 3.2.2
  • 安装最新版 cocoapods
  • 安装 rvm ruby 版本切换工具
  • 通过 rvm 安装 ruby 2.7.8
  • 切换 ruby 2.7.8 安装 cocoapods
  • 完成后 rvm 可以切换回系统 ruby 3.2.2 版本

步骤

注意以下操作竟可能不要用 sudo 执行,否则权限会乱掉。

第一步:准备环境

卸载旧版 ruby 2 和 ruby 版本工具(rvm rbenv asdf frum)

安装 homebrew

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

brew 升级到最新

$ brew update && brew doctor

检查自己的系统芯片 arm64 x86_64

$ uname -m

清理错误的配置,有些包管理工具会写下面的配置文件

~/.zshrc
~/.zprofile
~/.zlogin
~/.bash_profile
~/.profile
~/.bashrc
~/.config/fish/config.fish

主要是 .zshrc .bash_profile .profile

第二步:安装 ruby 最新版

安装 ruby 3.2.2

$ brew install ruby

配置 ruby 环境

$ vi ~/.bash_profile

# ruyb
# intel 芯片
if [ -d "/usr/local/opt/ruby/bin" ]; then
  export PATH=/usr/local/opt/ruby/bin:$PATH
  export LDFLAGS="-L/usr/local/opt/ruby/lib"
  export CPPFLAGS="-I/usr/local/opt/ruby/include"
  export PATH=`gem environment gemdir`/bin:$PATH
fi
# m1 silicon 芯片
if [ -d "/opt/homebrew/opt/ruby/bin" ]; then
  export PATH=/opt/homebrew/opt/ruby/bin:$PATH
  export LDFLAGS="-L/opt/homebrew/opt/ruby/lib"
  export CPPFLAGS="-I/opt/homebrew/opt/ruby/include"
  export PATH=`gem environment gemdir`/bin:$PATH
fi

查看版本

$ ruby -v
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-darwin22]

安装 cocoapods

$ gem install cocoapods

第三步:安装 rvm 版本管理

安装 rvm

$ curl -sSL https://get.rvm.io | bash -s stable

rvm 查看可安装版本

$ rvm list known

安装 ruby 2.7.8

$ rvm install ruby-2.7.8 --default

rvm 切换版本

$ rvm use ruby-2.7.8

安装 cocoapods

$ gem install cocoapods

rvm 会自动管理 gem 不同 ruby 版本的隔离

使用

切换 flutter 2.10.5

fvm 切到 2.10.5

$ fvm global 2.10.5

rvm 切到 ruby 2.7.8

$ rvm use ruby-2.7.8

cocoapods 拉包

$ cd ios
$ pod install

切换 flutter 3.7.12

rvm 还原系统

$ rvm reset

fvm 切到 3.7.12

$ fvm global 3.7.12

cocoapods 拉包

$ cd ios
$ pod install

小结

大家可以看到现在可以顺利的切换 flutter 2&3 的开发环境了,如果你有和我相同需求的,可以动手试试。

感谢阅读本文

如果我有什么错?请在评论中让我知道。我很乐意改进。


© 猫哥
ducafecat.com

end

本文由mdnice多平台发布

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容