如何替换Flutter内置Dart SDK以在Apple Silicon(ARM64)上原生运行
M1设备搭建原生ARM64 Flutter开发环境解决方案
你遇到的快照不兼容报错是因为单独替换Dart SDK架构不匹配导致的:Flutter 2.5.1本身的工具链是x86架构预编译的,即使替换了内置的ARM64 Dart SDK,Flutter工具运行时依然走x86逻辑,编译生成的是x86架构的代码快照,和ARM64的Dart VM无法匹配,因此抛出架构冲突错误。
方案1:升级到官方原生支持Apple Silicon的Flutter版本(推荐)
Flutter从2.8稳定版开始已经原生支持M1系列芯片,无需手动修改任何文件,步骤如下:
- 完全卸载当前旧版本Flutter,删除本地缓存的
flutter/bin/cache目录所有内容 - 确认终端没有通过Rosetta运行:执行
arch命令,输出arm64即为原生运行状态 - 下载对应Apple Silicon架构的Flutter稳定版安装包,或通过git拉取Flutter稳定分支源码
- 配置好Flutter环境变量后执行
flutter doctor,按照提示补全依赖:- 需安装适配Apple Silicon的Android Studio版本
- Android模拟器镜像选择
arm64-v8a架构版本
- 配置完成后查看活动监视器,可看到dart、flutter进程均属于Apple类别,无x86转译开销。
方案2:必须使用Flutter 2.5.1老版本的处理方式
如果项目受限不能升级Flutter版本,可通过源码编译对应版本的ARM64架构Flutter工具链:
- 拉取Flutter仓库2.5.1对应的tag源码到本地
- 在原生ARM64终端下进入Flutter目录,执行
./bin/flutter doctor触发首次源码编译 - 编译完成后执行
./bin/flutter precache --android --ios --macos拉取对应架构的依赖资源 - 不要手动修改
bin/cache/dart-sdk下的任何文件,编译过程会自动生成匹配的ARM64版本Dart SDK。
内容的提问来源于stack exchange,提问作者Ashwin
相关产品推荐
相关产品推荐

