Flutter:失去与设备的连接(生产应用程序)

Posted

技术标签:

【中文标题】Flutter:失去与设备的连接(生产应用程序)【英文标题】:Flutter: Lost connection to device (production app) 【发布时间】:2019-10-22 02:18:40 【问题描述】:

在调试模式和上传到 Play 商店的应用程序中,当我第一次打开应用程序时,它会崩溃。虽然如果我再次打开它,一切都会正常。

I/zygote64(11974): Rejecting re-init on previously-failed class java.lang.Class<com.google.firebase.messaging.FirebaseMessagingService>: java.lang.IllegalAccessError: Class com.google.firebase.iid.zzb extended by class com.google.firebase.messaging.FirebaseMessagingService is inaccessible (declaration of 'com.google.firebase.messaging.FirebaseMessagingService' appears in /data/app/com.ved.mentor101app-AbvtNHTF_HGKeS2lffOLiw==/base.apk!classes3.dex)
Lost connection to device.

D/androidRuntime(11974): Shutting down VM
E/AndroidRuntime(11974): FATAL EXCEPTION: main
E/AndroidRuntime(11974): Process: com.ved.mentor101app, PID: 11974
E/AndroidRuntime(11974): java.lang.RuntimeException: Unable to instantiate service io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService: java.lang.ClassNotFoundException: Didn't find class "io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService" on path: DexPathList[[zip file "/data/app/com.ved.mentor101app-AbvtNHTF_HGKeS2lffOLiw==/base.apk"],nativeLibraryDirectories=[/data/app/com.ved.mentor101app-AbvtNHTF_HGKeS2lffOLiw==/lib/arm64, /data/app/com.ved.mentor101app-AbvtNHTF_HGKeS2lffOLiw==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]

E/AndroidRuntime(11974):    Caused by: java.lang.IllegalAccessError: Class com.google.firebase.iid.zzb extended by class com.google.firebase.messaging.FirebaseMessagingService is inaccessible (declaration of 'com.google.firebase.messaging.FirebaseMessagingService' appears in /data/app/com.ved.mentor101app-AbvtNHTF_HGKeS2lffOLiw==/base.apk!classes3.dex)
E/AndroidRuntime(11974):        ... 13 more
I/zygote64(11974): Do partial code cache collection, code=61KB, data=44KB
I/zygote64(11974): After code cache collection, code=61KB, data=44KB
I/zygote64(11974): Increasing code cache capacity to 256KB
I/Process (11974): Sending signal. PID: 11974 SIG: 9er

完整的调试语句(由于 *** 不允许其长度,因此无法在文本中上传):

// flutter doctor -v:
flutter doctor -v
[√] Flutter (Channel stable, v1.2.2-pre.1, on Microsoft Windows [Version 10.0.15063], locale en-US)
    • Flutter version 1.2.2-pre.1 at C:\Users\Dell\flutter
    • Framework revision 03b53e0901 (7 weeks ago), 2019-04-20 19:15:26 +0530
    • Engine revision 3757390fa4
    • Dart version 2.1.2 (build 2.1.2-dev.0.0 0a7dcf17eb)

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

[√] Android Studio (version 3.3)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 33.4.1
    • Dart plugin version 182.5215
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)

[√] VS Code (version 1.34.0)
    • VS Code at C:\Users\Dell\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.1.0

[√] Connected device (1 available)
    • RMX1801 • 8843cc23 • android-arm64 • Android 8.1.0 (API 27)

• No issues found!


  [1]: https://i.stack.imgur.com/ZcIaC.png
  [2]: https://i.stack.imgur.com/NzpLH.png
  [3]: https://i.stack.imgur.com/EnqNV.png

【问题讨论】:

只是想指出你正在使用一个非常过时的 Flutter 版本,你应该更新它。目前稳定频道上的当前版本是 v1.5.4-hotfix.2 flutter.dev/docs/development/tools/sdk/releases 。你用的是什么包需要firebase? 是的,我知道,但是我已经对我的应用程序的颤振源代码进行了一些自定义更改,升级可能会删除它们,我会尽快升级颤振,关于你的问题,我有 6 -7 个包,但 firebase_analytics 是在此错误发生之前添加到项目中的最后一个包! 你能检查你的gradle吗?听起来你可能会遇到引用/依赖问题github.com/flutter/flutter/issues/23545#issuecomment-434041145github.com/OneSignal/OneSignal-Android-SDK/issues/754 【参考方案1】:

最终有帮助的是:

在应用层build.gradle

 defaultConfig       
    
    minSdkVersion 23
    

在项目级别gradle.properties添加

org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
android.enableR8=true

build.gradle添加

dependencies 
    classpath 'com.android.tools.build:gradle:3.4.2'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.google.gms:google-services:4.2.0'

你的 gradle 版本应该大于 5

如果您不使用 Kotlin 支持,则可以跳过该 Kotlin 插件 不要忘记运行flutter clean,然后运行flutter pub upgrade

这些更改帮助我防止了我的应用崩溃,它也应该对您有所帮助。

【讨论】:

谢谢,将这些行添加到 gradle.properties 为我解决了这个问题。知道为什么会这样吗? 随着sdk更新,一些代码被破坏,社区不得不更改配置文件。但是我们在本地使用我们的项目,它是建立在早期版本上的,所以会出现一些代码冲突,并且这些类型的行为被注意到。如果我们从头开始创建一个新项目,然后我们实现该功能,那么它更不容易出错。 我使用相同的配置值,但应用程序在模拟器上仍然崩溃,但在真实设备上却没有。

以上是关于Flutter:失去与设备的连接(生产应用程序)的主要内容,如果未能解决你的问题,请参考以下文章

颤振:“失去与设备的连接。”第二次使用 image_picker 从 iOS 上的图库中选择照片

Xcode 在调试时失去与设备的连接

在特定设备上调试应用程序会导致应用程序崩溃并且 Xcode 失去与设备的连接

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

通过 Facebook 进行 Flutter 和 Firebase 身份验证:与设备的连接丢失

未能获得匹配的快照:失去与应用程序的连接