Flutter:热重载后出现“丢失与设备的连接”错误

Posted

技术标签:

【中文标题】Flutter:热重载后出现“丢失与设备的连接”错误【英文标题】:Flutter: "Lost connection to device" error after Hot Reload 【发布时间】:2018-12-18 04:08:00 【问题描述】:

这是来自调试控制台的完整错误:

Launching lib\main.dart on android SDK built for x86 in debug mode...
Built build\app\outputs\apk\debug\app-debug.apk.
I/FlutterActivityDelegate( 4158): onResume setting current activity to this
D/        ( 4158): HostConnection::get() New Host Connection established 0xdc74b680, tid 4178
D/EGL_emulation( 4158): eglMakeCurrent: 0xdc741300: ver 2 0 (tinfo 0xdc74c480)
F/libc    ( 4158): Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xd in tid 4177 (Thread-2), pid 4158 (le.startupnamer)
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'google/sdk_gphone_x86/generic_x86:9/PPP4.180612.007/4860066:userdebug/dev-keys'
Revision: '0'
ABI: 'x86'
pid: 4158, tid: 4177, name: Thread-2  >>> com.example.startupnamer <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xd
Cause: null pointer dereference
eax ca0a8aac  ebx ca0a8aac  ecx 0000000a  edx c9046c80
edi de6638d0  esi c90479f8
ebp c9046b58  esp c9046b58  eip c96e31d8
backtrace:
#00 pc 006981d8  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#01 pc 008f5b75  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#02 pc 008e87ea  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#03 pc 008f3ad6  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#04 pc 008e8b2f  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#05 pc 008ffb03  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#06 pc 008eb310  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#07 pc 008f3d98  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#08 pc 008e8b2f  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#09 pc 008eafc8  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#10 pc 008f997f  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#11 pc 008eaff8  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#12 pc 008fc81c  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#13 pc 008eaf69  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#14 pc 008f997f  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#15 pc 008eaff8  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#16 pc 008ef41e  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#17 pc 008f0570  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#18 pc 0091433e  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#19 pc 0092fad4  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#20 pc 00932f2a  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#21 pc 00934573  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#22 pc 00933d2b  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#23 pc 0093004a  /data/app/com.example.startupnamer-Doz3k_Pl0QfJtnmxYqiyHg==/lib/x86/libflutter.so
#24 pc 0000056b  <anonymous:c7680000>
Lost connection to device.
Exited (sigterm)

我正在使用带有 Flutter 扩展的 Visual Studio Code,但没有使用 Dart 扩展。我还尝试在 Android 模拟器上运行我的 Flutter 应用程序,这是一个具有 API 28 x86 的 Nexus 6。模拟性能设置为“硬件 - GLES 2.0”。其余设置保持默认。

在将模拟器与 Flutter 一起使用之前,我冷启动了模拟器,因为如果我正常启动模拟器,adb 连接问题会阻止模拟器加载。可能不相关,但还是要注意。

在命令行中输入 flutter doctor -v 将显示以下内容:

[√] Flutter (Channel beta, v0.5.1, on Microsoft Windows [Version 10.0.17134.112], locale en-AU)
    • Flutter version 0.5.1 at C:\dev\flutter
    • Framework revision c7ea3ca377 (6 weeks ago), 2018-05-29 21:07:33 +0200
    • Engine revision 1ed25ca7b7
    • Dart version 2.0.0-dev.58.0.flutter-f981f09760

[√] Android toolchain - develop for Android devices (Android SDK 28.0.1)
    • Android SDK at C:\Android\android-sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.1
    • ANDROID_HOME = C:\Android\android-sdk
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b02)
    • All Android licenses accepted.

[√] Android Studio (version 3.1)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 26.0.1
    • Dart plugin version 173.4700
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b02)

[√] IntelliJ IDEA Community Edition (version 2018.1)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.1.2
    • Flutter plugin version 26.0.2
    • Dart plugin version 181.4668.60

[!] VS Code, 64-bit edition (version 1.25.0)
    • VS Code at C:\Program Files\Microsoft VS Code
    • Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[!] Connected devices
    ! No devices available

! Doctor found issues in 2 categories.

现在解决实际问题:

当我加载我的 Flutter 应用程序时,无论代码处于何种状态,应用程序都会从​​创建后第一次保存时的状态启动。如果我尝试对代码进行任何更改(我只是更改主题颜色)并尝试热重载,应用程序会因我上面发布的错误而崩溃。为什么会发生这种情况,我可以做些什么来解决这个问题?

加载项目时没有错误,或者当我热重载而不对代码进行任何更改时。

感谢任何帮助。

编辑:我无法使用同一项目在 Android Studio 中复制此错误。这个错误只出现在我的 Visual Studio Code 中。

【问题讨论】:

我不太明白你的问题。但是,请注意我看到了 le.startupnamercom.example.startupnamer.. startup_namer 是我的 Flutter 项目的名称。 【参考方案1】:

我发现“与设备的连接中断”的一个原因

我在添加 contacts_service 依赖项时发现了这个问题

如果您安装了任何需要用户权限的插件,但您没有以编程方式获得权限,那么您会发现此错误。

手动解决这个问题

转到应用信息并在应用中手动授予权限

以编程方式解决此问题。

在访问任何插件之前以编程方式获取用户权限

【讨论】:

【参考方案2】:

我设法在我的机器上解决了这个问题。对我来说,诀窍是切换稳定频道并更新颤振:

-flutter upgrade

-flutter pub get    

【讨论】:

【参考方案3】:

您发布的第一个错误是崩溃,应该是raised on GitHub。应该有某种方式来符号化堆栈跟踪(因此它具有真实的方法名称等),但我找不到它的说明。可能和this 或this 是同一个问题,我不确定。

我正在使用带有 Flutter 扩展的 Visual Studio Code,但没有使用 Dart 扩展。

这里不相关,但仅供参考,Flutter 扩展依赖于 Dart 扩展,因此安装 Flutter 会自动安装 Dart。

当我加载我的 Flutter 应用时,无论代码处于何种状态,应用都会从创建后第一次保存时的状态启动。

这听起来像this issue;值得一提的是,您可以在那里使用它来帮助收集信息(我不确定 Flutter 团队中是否有人能够在本地重现它以进行调试)。

编辑:我无法使用同一项目在 Android Studio 中复制此错误。这个错误只出现在我的 Visual Studio Code 中。

两个 IDE 使用相同的工具,因此环境之间可能存在一些细微差别(例如,我认为大多数人在 IntelliJ/Android Studio 中不使用调试器,但在 VS Code 中使用调试器)。可以在 VS Code fairly easily 中捕获日志,但我不知道 IntelliJ/Android Studio 是否有类似的比较。

【讨论】:

【参考方案4】:

只需更新你的颤振

$ 颤振升级--force

对我来说很好用 试试看

【讨论】:

【参考方案5】:

在 android studio 上更新您的 android sdk、adb、模拟器。

【讨论】:

这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review【参考方案6】:

我也遇到了同样的问题。

我关闭了 VSCode 和模拟器。按照此线程的其中一个 cmets 中的建议检查了 Android Studio。 Android Studio 说没有可用的更新。

检查颤振升级 - 说一切都是最新的。

重新启动 VSCode 和模拟器,这次它运行良好。我错过了什么吗?也许它只是需要重新启动?

【讨论】:

【参考方案7】:

2个月后出现这个错误我可以使用热重载模式我解决了这个问题只需更换我们的移动充电线并使用USB线进行调试,希望这对你有帮助,如果可以,请投票。

【讨论】:

以上是关于Flutter:热重载后出现“丢失与设备的连接”错误的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何使用 Firebase PhoneNumberAuth 修复丢失与设备的连接错误

Flutter 未处理的异常:热重载后 cloud_firestore 上的堆栈溢出

Flutter Provider 仅在热重载后显示结果

Flutter“不能热加载(hot reload),热重载按钮灰色且无法点击”的解决方案

首次尝试后热重载卡住

Flutter混合开发模式下的代码调试