多环境flutter配置出现Error: Unable to ‘pub upgrade‘ flutter tool. Retrying in five seconds
本文介绍了在Mac电脑上同时配置原始Flutter和鸿蒙Flutter(OHFlutter)的方法。通过版本隔离技术,将两个Flutter版本分别存放在不同目录,并利用Shell别名实现快速切换。配置过程包括:安装基础工具、下载两个Flutter版本、设置环境变量别名、分别初始化并验证两个版本。关键点在于使用flutter_original和flutter_ohos命令区分调用,并确保IDE正确配
前言
在Mac电脑上同时配置原始Flutter(针对iOS/Android等跨平台) 和鸿蒙版本Flutter(OpenHarmony Flutter,简称OH Flutter),核心需求是让两个版本独立共存、互不干扰,且能分别编译对应平台的应用。
配置思路
Mac上实现多Flutter版本共存的核心是 “版本隔离”:通过flutter命令别名、独立的环境变量配置,让系统能区分两个版本的调用。具体来说:
- 两个Flutter版本分开存放(不同文件夹);
- 不设置全局
FLUTTER_HOME,而是通过别名动态切换; - 各自配置对应平台的依赖(原始Flutter需Xcode/Android Studio,OH Flutter需DevEco Studio)。
第一步:准备工作
1. 安装基础依赖
无论哪个Flutter版本,都需要先安装以下基础工具:
- Git:用于拉取Flutter源码(Mac自带,可通过
git --version验证,无则通过brew install git安装); - Homebrew:Mac包管理器(可选,方便安装依赖,官网:https://brew.sh/);
- Java 11+:OH Flutter和Android开发必需(通过
brew install openjdk@11安装,或官网下载); - Xcode:原始Flutter iOS开发必需(App Store安装,需版本≥13.0);
- Android Studio:原始Flutter Android开发必需(官网下载:https://developer.android.com/studio);
- DevEco Studio:OH Flutter鸿蒙开发必需(官网下载:https://developer.harmonyos.com/cn/develop/deveco-studio/)。
2. 下载两个Flutter版本
创建独立文件夹存放,避免混淆(示例路径,可自定义):
# 1. 原始Flutter(稳定版,从官方仓库拉取)
mkdir -p ~/Development/Flutter/original
cd ~/Development/Flutter/original
git clone https://github.com/flutter/flutter.git .
git checkout stable # 切换到稳定版
# 2. 鸿蒙Flutter(OH Flutter,从OpenHarmony仓库拉取)
mkdir -p ~/Development/Flutter/ohos
cd ~/Development/Flutter/ohos
git clone https://gitee.com/openharmony-sig/flutter.git .
git checkout ohos-stable # 切换到鸿蒙稳定分支(以官方最新分支为准)
第二步:配置版本隔离(核心步骤)
通过 Shell别名 实现两个版本的快速切换,无需手动修改环境变量。
1. 编辑Shell配置文件
Mac默认Shell是zsh(配置文件为~/.zshrc),若用bash则编辑~/.bash_profile:
# 打开配置文件
open -e ~/.zshrc
2. 添加别名和切换脚本
在文件末尾添加以下内容(路径需替换为你实际的Flutter存放路径):
# ==================== 原始Flutter配置(别名:flutter_original)====================
alias flutter_original='~/Development/Flutter/original/bin/flutter'
# 原始Flutter的dart命令别名
alias dart_original='~/Development/Flutter/original/bin/dart'
# ==================== 鸿蒙Flutter配置(别名:flutter_ohos)====================
alias flutter_ohos='~/Development/Flutter/ohos/bin/flutter'
# 鸿蒙Flutter的dart命令别名
alias dart_ohos='~/Development/Flutter/ohos/bin/dart'
# ==================== 快速切换命令(可选,简化使用)====================
# 切换到原始Flutter(临时设置当前终端的FLUTTER_HOME,方便IDE识别)
alias use_flutter_original='export FLUTTER_HOME=~/Development/Flutter/original; export PATH=$FLUTTER_HOME/bin:$PATH; echo "Switched to original Flutter: $(flutter --version | head -n1)"'
# 切换到鸿蒙Flutter
alias use_flutter_ohos='export FLUTTER_HOME=~/Development/Flutter/ohos; export PATH=$FLUTTER_HOME/bin:$PATH; echo "Switched to OH Flutter: $(flutter --version | head -n1)"'
3. 生效配置
保存文件后,执行以下命令让配置生效:
source ~/.zshrc
第三步:分别初始化两个Flutter版本
1. 初始化原始Flutter(针对iOS/Android)
# 切换到原始Flutter环境
use_flutter_original
# 1. 运行doctor检查依赖,修复缺失项
flutter doctor
# 常见修复操作:
# - 同意Xcode许可:sudo xcodebuild -license accept
# - 安装iOS模拟器:打开Xcode → Preferences → Components → 勾选对应iOS版本模拟器
# - 配置Android Studio:安装Flutter插件、Dart插件,配置Android SDK
# - 修复Android许可证:flutter doctor --android-licenses(按提示输入y同意)
# 验证:成功显示原始Flutter版本,无关键错误(Xcode/Android Studio相关项需打勾)
flutter --version
2. 初始化鸿蒙Flutter(针对OpenHarmony)
# 切换到鸿蒙Flutter环境
use_flutter_ohos
# 1. 运行doctor检查鸿蒙相关依赖
flutter doctor
# 2. 安装鸿蒙Flutter必需的工具链
flutter pub global activate ohos_cli
# 验证ohos_cli安装:ohos_cli --version
# 3. 配置DevEco Studio(关键步骤)
# - 打开DevEco Studio → Preferences → Plugins → 安装Flutter OH插件、Dart插件
# - 配置鸿蒙SDK:在DevEco Studio中下载对应版本的HarmonyOS SDK(需登录华为开发者账号)
# - 配置模拟器:创建鸿蒙手机/平板模拟器(DevEco Studio → Device Manager)
# 验证:成功显示鸿蒙Flutter版本,DevEco Studio相关项无错误
flutter --version
第四步:验证配置(关键测试)
1. 测试原始Flutter(编译iOS/Android应用)
use_flutter_original
# 创建测试项目
flutter create test_original
cd test_original
# 运行iOS模拟器(需先打开Xcode模拟器)
flutter run -d ios
# 或运行Android模拟器(需先打开Android Studio模拟器)
flutter run -d android
若能正常启动模拟器并显示Flutter默认页面,说明原始Flutter配置成功。
2. 测试鸿蒙Flutter(编译鸿蒙应用)
use_flutter_ohos
# 创建鸿蒙Flutter项目(需用ohos_cli)
ohos_cli create test_ohos
cd test_ohos
# 运行鸿蒙模拟器(需先打开DevEco Studio的鸿蒙模拟器)
flutter run -d ohos
若能正常启动鸿蒙模拟器并显示应用页面,说明OH Flutter配置成功。
关键注意事项
- 切换版本必须用别名:调用原始Flutter用
flutter_original,鸿蒙用flutter_ohos;或通过use_flutter_original/use_flutter_ohos切换当前终端的默认版本; - IDE配置区分:
-
- Android Studio/Xcode中,指定Flutter SDK路径为
~/Development/Flutter/original; - DevEco Studio中,指定Flutter SDK路径为
~/Development/Flutter/ohos;
- Android Studio/Xcode中,指定Flutter SDK路径为
- 避免全局FLUTTER_HOME:若之前配置过全局
FLUTTER_HOME,需在~/.zshrc中删除,否则会覆盖别名配置; - 鸿蒙Flutter版本兼容:OH Flutter的分支需与DevEco Studio的鸿蒙SDK版本匹配(建议都用稳定版,避免兼容性问题)。
最后
- 核心是**“独立存放+别名切换”**,实现两个Flutter版本隔离;
- 原始Flutter重点配置Xcode/Android Studio依赖,OH Flutter重点配置DevEco Studio和鸿蒙SDK;
- 调用时通过
flutter_original/flutter_ohos区分,或用use_xxx脚本快速切换终端环境。
需要我为你提供一键切换Flutter版本的Shell脚本(含自动检查依赖) 吗?
问题集合
如果执行命令use_flutter_ohos出现这个问题:代表网络问题导致的dart-sdk下载失败

Unable to 'pub upgrade' flutter tool. Retrying in five seconds
Downloading Darwin arm64 Dart SDK from Flutter engine 9715615d6dd8204da2cbc77ce61053312d723621...
Building flutter tool...
.
Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (9 tries left)
.
Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (8 tries left)
.
Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (7 tries left)
.
Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (6 tries left)
.
Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (5 tries left)
.
Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (4 tries left)
.
Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (3 tries left)
.
Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (2 tries left)
.
Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (1 tries left)
Command 'pub upgrade' still failed after 10 tries, giving up.
Switched to OH Flutter: dart-sdk-url: https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com/flutter_infra_release/flutter/9715615d6dd8204da2cbc77ce61053312d723621/dart-sdk-darwin-arm64.zip
自行下载dart-sdk有概率出现识别异常~
解决办法
删除cache目录

从新执行命令
~/Development/Flutter/ohos/bin/flutter doctor

成功完成🏅
更多推荐




所有评论(0)