如何替换 Flutter 中捆绑的 Dart SDK 以在 Apple Silicon (ARM64) 上本地运行?

2024-04-27

Dart SDK 正式支持 ARM64,截至目前,2.14.2是最新(稳定)的 Dart SDK,支持 ARM64。虽然它与我的 Flutter 设置中捆绑的版本相同,但它似乎在 Intel 架构上运行(活动监视器显示在 Intel 上运行的 dart 进程)。

我手动尝试在我的 flutter 安装上替换 dart SDK,但替换flutter-directory/bin/cache/dart-sdk/包含为 ARM64 制作的 Dart SDK 的 zip 文件的内容,下载自dart.dev 存档 https://dart.dev/get-dart/archive。但是尝试在 Android 模拟器(在 ARM64 上运行并且正在我的旧 Flutter 设置上运行)上运行应用程序时,会抛出以下错误:

Launching lib/main.dart on sdk gphone64 arm64 in debug mode...
lib/main.dart:1
Snapshot not compatible with the current VM configuration: the snapshot requires 'release no-code_comments
no-dwarf_stack_traces_mode lazy_async_stacks lazy_dispatchers 
use_bare_instructions no-dedup_instructions
no-"asserts" "use_field_guards" "use_osr" x64-sysv no-null-safety' but the VM has 'release no-code_comments no-
dwarf_stack_traces_mode lazy_async_stacks 
lazy_dispatchers use_bare_instructions no-dedup_instructions no-"asserts" "use_field_guards" "use_osr" arm64-sysv no-null-safety'
2
the Dart compiler exited unexpectedly.

有没有其他方法可以在 M1 设备上进行完整的 ARM64 Flutter 设置?

颤振版本2.5.1

飞镖版本 2.14.2

设备:MacBook Air(M1,2020)


更新:从 Flutter 3.0 开始,Flutter 附带了 arm64 dart sdk,所以你所要做的就是更新到最新版本



旧答案:

  1. 直接从 dart.dev 下载 dart sdk:https://dart.dev/get-dart/archive https://dart.dev/get-dart/archive- 一旦你提取它,你会看到一个dart-sdk folder
  2. 转到 flutter 安装根目录,然后输入以下路径:flutter-sdk-root/bin/cache
  3. Replace dart-sdk从上一步到您下载的

现在,这部分很糟糕,所以我不能真正保证它总是有效。

如果您现在尝试运行该应用程序,dart 编译器将崩溃。

Using flutter run -v(它启用详细模式,以获取更多日志)并且通过几次谷歌查找,我能够弄清楚问题是由名为的快照文件引起的frontend_server.dart.snapshot它位于sdk中的2个地方:

  • flutter/bin/cache/dart-sdk/bin/snapshots- 针对手臂的新快照,您刚刚将其粘贴到此处
  • flutter/bin/cache/artifacts/engine/darwin-x64- 旧快照仍然适用x64
  1. 复制一个名为frontend_server.dart.snapshot从上面提到的第一个路径到第二个路径,替换旧文件

我进行了一次非常随意的测试,让我感觉一下 hello world 应用程序的编译时间是否有任何改进。我所说的“随意”是指我没有关闭任何后台程序。

测试过程如下:

  • 在ios模拟器上运行应用程序
  • 杀死应用程序并运行 flutter clean
  • 再次运行应用程序并记下构建时间

初步结果非常有希望:

  • ~17s - 16" mbp i9
  • ~16s - 空气 m1 通过罗塞塔
  • ~12s - 空气 m1 原生
  • ~11s - 14" mbp m1 最大本机
$ dart --version
Dart SDK version: 2.15.0-116.0.dev (dev) (Thu Sep 16 09:47:01 2021 -0700) on "macos_arm64"

$ flutter --version
Flutter 2.6.0-11.0.pre • channel dev • https://github.com/flutter/flutter.git
Framework • revision 4b330ddbed (5 weeks ago) • 2021-09-16 17:29:58 -0700
Engine • revision 5b81c6d615
Tools • Dart 2.15.0 (build 2.15.0-116.0.dev)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何替换 Flutter 中捆绑的 Dart SDK 以在 Apple Silicon (ARM64) 上本地运行? 的相关文章

随机推荐