Flutter 的 main.dart 文件在 Android Studio 中执行时卡在“将文件同步到为 x86 64 构建的设备 Android SDK ...”
Posted
技术标签:
【中文标题】Flutter 的 main.dart 文件在 Android Studio 中执行时卡在“将文件同步到为 x86 64 构建的设备 Android SDK ...”【英文标题】:Flutter's main.dart file gets stuck at "Syncing files to device Android SDK built for x86 64..." at execution in Android Studio 【发布时间】:2020-05-14 06:40:27 【问题描述】:我正在 android Studio 上尝试我的第一个颤振代码,并在模拟器上显示它。 我确实得到了输出,但编译永远不会结束,这意味着我不能热重启我的代码。我正在学习的教程没有遇到这个问题。
EDIT:出现了一些新错误。它开始挂在“Installing build\app\outputs\apk\app.apk”,我解决了这个问题,现在它显示了这个。 它是间歇性的,跳帧和线路互换,但或多或少问题仍然存在。请帮助我为解决它而发疯:)
出现如下代码:
Launching lib\main.dart on Android SDK built for x86 64 in debug mode...
Running Gradle task 'assembleDebug'...
√ Built build\app\outputs\apk\debug\app-debug.apk.
Syncing files to device Android SDK built for x86 64...
I/Choreographer( 5985): Skipped 61 frames! The application may be doing too much work on its main thread.
D/EGL_emulation( 5985): eglMakeCurrent: 0x7e7ece03e300: ver 3 0 (tinfo 0x7e7ece1a85e0)
I/OpenGLRenderer( 5985): Davey! duration=1554ms; Flags=1, IntendedVsync=1503595359014, Vsync=1504612025640, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=1504619561700, AnimationStart=1504619633200, PerformTraversalsStart=1504619653300, DrawStart=1504626010200, SyncQueued=1504626824700, SyncStart=1504630541800, IssueDrawCommandsStart=1504630721200, SwapBuffers=1504690106800, FrameCompleted=1505153649500, DequeueBufferDuration=49170000, QueueBufferDuration=2336000,
D/EGL_emulation( 5985): eglMakeCurrent: 0x7e7ecc6fa7e0: ver 3 0 (tinfo 0x7e7ecc62baa0)
Syncing files to device Android SDK built for x86 64...
【问题讨论】:
您知道任何解决方法吗? 我正在使用“调试”选项来运行我的代码。看起来很正常,StatelessWidget 类也让我的代码没有热重启。 这个解决方案对我有用....***.com/a/61151567/3888834 【参考方案1】:嗯,在 Linux 上,这似乎是因为内核 5.5 中的一些变化。我测试了多次,我确信 - 在内核 5.4 上它可以工作,但在内核 5.5 上重构挂起并且调试也不起作用。
这很奇怪,我不知道与内核有什么关系(重构?wtf?),我怀疑 filsestem 处理中的一些变化可能会导致这种情况?需要向 InteliJ 或 Flutter 创建错误报告并告诉他们新内核导致问题。
同样奇怪的是,在使用 Android Studio 在 Java/Kotlin 中开发时,我没有任何问题,重构和调试都可以正常工作。所以这肯定和Flutter有关。
所以,在 Linux 上,现在需要将内核降级到 5.4(不知道 Mac 或 Win)。
【讨论】:
在 Windows 上工作。我一直设法在我的 AVD 上以调试模式运行它。虽然热重载暂时解决了我的问题,但我不知道为什么或如何。 你在哪个发行版上? Arch 上也有同样的问题。今天早上升级到内核 5.5 然后颤振卡在同步文件上。我在颤振稳定,也试过大师,问题仍然存在。将内核降级到 5.4 现在它又可以工作了.. Debian。但发行版并不重要,重要的是内核版本 调整了一些东西,如果你能解决这个问题,请告诉我,顺便说一句,在 Android Studio 上工作。 @user1209216 你无法解决这个问题,要么降级内核,要么在 Flutter 那边等待修复【参考方案2】:当我没有连接到网络时遇到了这个问题。我是第一次运行该项目。所以检查你的互联网并重新启动应用程序几次它会运行得很快
【讨论】:
我的互联网连接正常,似乎无法解决。【参考方案3】:我在 linux5.5 内核上遇到了完全相同的问题。
inxi
CPU: Quad Core AMD Ryzen 3 PRO 3300U w/ Radeon Vega Mobile Gfx (-MCP-)
speed/max: 1397/1400 MHz Kernel: 5.5.2-1-MANJARO x86_64 Up: 1d 4h 05m
Mem: 12541.8/22014.1 MiB (57.0%) Storage: 476.94 GiB (15.3% used) Procs: 332
Shell: fish 3.0.2 inxi: 3.0.37
颤抖的医生
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.12.13+hotfix.8, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] Android Studio (version 3.5)
[✓] Connected device (1 available)
• No issues found!
【讨论】:
【参考方案4】:只同意user1209216。
使用 Visual Studio,在使用 kernel-5.5.8-200.fc31 时,执行卡在“将文件同步到设备”上。
我已降级到 kernel-5.3.7-301.fc31,并且能够在模拟器和物理设备上启动 Flutter 应用。
另见:https://github.com/flutter/flutter/issues/
您可以降级到以前的内核,直到新版本的 Flutter 在稳定通道上发布,或者运行 flutter channel master
。
有关 Flutter 如何构建其发布渠道的更多信息:https://github.com/flutter/flutter/wiki/Flutter-build-release-channels
【讨论】:
【参考方案5】:将此语句放在 main 函数的开头。
WidgetsFlutterBinding.ensureInitialized();
然后重新启动应用程序。
【讨论】:
【参考方案6】:我今天也遇到了同样的情况,花了几个小时才找到解决办法,很简单。
我基本上是开始构建一个循环,然后因为其他事情而分心,然后忘记删除它。
那么是什么导致我的“将文件同步到设备”没有完成,并且我的初始页面冻结了,就是这个。我的 Home initState 中有一个无限循环。
【讨论】:
【参考方案7】:我在 Linux 内核 (5.11) 上运行的 Fedora 中遇到了同样的错误。我尝试了几件事,但没有任何效果。需要 2-3 次强制重启才能完成构建。
我将模拟器 API 从 API 级别 30 (x86) 降级到 API 级别 28 (x86_64) 现在它可以在我的机器上无缝运行。构建一个小应用程序只需要 1 分钟左右。因此,如果没有任何效果,您可以尝试降级模拟器的 API 级别。
【讨论】:
以上是关于Flutter 的 main.dart 文件在 Android Studio 中执行时卡在“将文件同步到为 x86 64 构建的设备 Android SDK ...”的主要内容,如果未能解决你的问题,请参考以下文章
自动完成/智能感知不适用于 VSCode 中的 dart/flutter
[Flutter] lib/main.dart:1: Warning: Interpreting this as package URI, 'package:flutter_app/main.