DART SDK正式支持ARM64,到目前为止,2.14.2是支持ARM64的最新(稳定)DART SDK.虽然它与我的Flutter 设置中Bundle 的版本相同,但它似乎在英特尔架构上运行(活动监视器显示在英特尔上运行的DART进程).

我手动try 通过将flutter-directory/bin/cache/dart-sdk/替换为为ARM64制作的DART SDK压缩文件的内容(从dart.dev archive下载)来替换我的Flutter 安装上的DART SDK.但是try 在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设备上进行完全ARM64Flutter 设置?

Flutter 版本2.5.1

Dart版本2.14.2

设备:MacBook Air(M1,2020)

推荐答案

Update: If you use master channel, flutter will download ARM SDKs for you

在M1上,因为默认情况下有flutter-2.11-candidate.7艘装有ARM SDK的Flutter 飞船.



老答案:

  1. 直接从dart.dev:https://dart.dev/get-dart/archive下载DART SDK- 解压后,您将看到一个dart-sdk文件夹
  2. 转到Flutter 安装根目录,然后输入路径:flutter-sdk-root/bin/cache
  3. 将上一步中的dart-sdk替换为下载的dart-sdk

现在,这部分是老生常谈的,所以我不能保证它总是有效的.

如果您现在try 运行该应用程序,DART编译器将崩溃.

使用flutter run -v(启用详细模式,以获取更多日志(log)),并通过几次Google查找,我能够计算出问题是由一个名为frontend_server.dart.snapshot的快照文件引起的,该文件位于SDK中的两个位置:

  • flutter/bin/cache/dart-sdk/bin/snapshots-以ARM为目标的新快照,您刚刚将其粘贴到此处
  • x64flutter/bin/cache/artifacts/engine/darwin-x64个旧快照仍然存在
  1. 将名为frontend_server.dart.snapshot的文件从上述第一个路径复制到第二个路径,替换旧文件

我运行了一个非常随意的测试,让我感觉到hello world应用的编译时间是否有任何改进.所谓随意,我的意思是我没有关闭任何在后台的程序.

测试过程如下:

  • 在iOS模拟器上运行应用程序
  • 关闭应用程序,然后干净利落地运行FIFTH
  • 再次运行应用程序并记下构建时间

初步的结果是非常有希望的:

  • ~17S-16"MBP i9
  • ~16s-经罗塞塔的空气m1
  • ~12S-AIR 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)

enter image description here

Flutter相关问答推荐

ListTile未正确显示在flutter中

我如何才能收到每天重复的预定通知?

ProviderContainer和GoRouter

我有一个问题:类型';()=>;Null';不是类型转换中类型';(Int)=>;void';的子类型

ReCAPTCHA Enterprise中的严重安全漏洞

Flutter 数独网格

如何翻转这种剪刀设计

为Android生成时出现Flutter 错误:给定资源值的<;COLOR&>无效

ListView 后台可见

将状态维护到 asyncNotifier

切换 Firebase 项目后 Flutter FirebaseAuthException 'configuration-not-found'

如何更改 DropDownMenu 的显示方向?

如何(部分)更新 riverpod 中的 AsyncValue?

如何在 Flutter 中将列小部件添加到行小部件?

从物理设备 Flutter 中移除 USB 后启动画面不可见?

如何在屏幕按钮中排列 row() (我想在按钮中放置屏幕导航图标)

Android Studio 模拟器屏幕闪烁

如何将所有行项目平等地放在一行中?Flutter

参数类型Future>不能分配给参数类型Future>?

如何在 IntroductionScreen 小部件 Flutter 中制作全屏渐变色