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 失去与设备的连接
Flutter:如何使用 Firebase PhoneNumberAuth 修复丢失与设备的连接错误