【问题标题】:My app crashed everytime I send notification from Firebase Cloud Messaging每次我从 Firebase Cloud Messaging 发送通知时,我的应用程序都会崩溃
【发布时间】:2019-11-22 02:45:03
【问题描述】:

我想从 FCM 向我的设备发送通知,但每次我发送通知时我的应用程序总是停止工作。可能是什么问题?

这是我的一些代码

// app-level build.gradle
dependencies {
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.google.firebase:firebase-core:16.0.9'
    implementation 'com.android.support:multidex:1.0.3'
    implementation 'com.android.support:design:27.1.0'
    implementation 'com.google.firebase:firebase-messaging:17.3.3'
}

// 项目级build.gradle

dependencies {
    classpath 'com.android.tools.build:gradle:3.3.1'
    classpath 'com.google.gms:google-services:4.2.0'
}

AndroidManifest.xml

<intent-filter>
    <action android:name="FLUTTER_NOTIFICATION_CLICK"/>
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  cloud_firestore:
  firebase_core: 
  firebase_messaging: 
  cupertino_icons: ^0.1.2

dev_dependencies:

错误日志:

E/AndroidRuntime(17164): 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.maztur.hunafa-z3QygagDkOlt4fQ6fzLBgw==/base.apk"],nativeLibraryDirectories=[/data/app/com.maztur.hunafa-z3QygagDkOlt4fQ6fzLBgw==/lib/arm64, /data/app/com.maztur.hunafa-z3QygagDkOlt4fQ6fzLBgw==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]
E/AndroidRuntime(17164):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:3737)
E/AndroidRuntime(17164):    at android.app.ActivityThread.access$1400(ActivityThread.java:237)
E/AndroidRuntime(17164):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1801)
E/AndroidRuntime(17164):    at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime(17164):    at android.os.Looper.loop(Looper.java:214)
E/AndroidRuntime(17164):    at android.app.ActivityThread.main(ActivityThread.java:7045)
E/AndroidRuntime(17164):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(17164):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
E/AndroidRuntime(17164):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
E/AndroidRuntime(17164): Caused by: java.lang.ClassNotFoundException: Didn't find class "io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService" on path: DexPathList[[zip file "/data/app/com.maztur.hunafa-z3QygagDkOlt4fQ6fzLBgw==/base.apk"],nativeLibraryDirectories=[/data/app/com.maztur.hunafa-z3QygagDkOlt4fQ6fzLBgw==/lib/arm64, /data/app/com.maztur.hunafa-z3QygagDkOlt4fQ6fzLBgw==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]
E/AndroidRuntime(17164):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
E/AndroidRuntime(17164):    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
E/AndroidRuntime(17164):    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
E/AndroidRuntime(17164):    at android.app.AppComponentFactory.instantiateService(AppComponentFactory.java:103)
E/AndroidRuntime(17164):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:3732)
E/AndroidRuntime(17164):    ... 8 more
E/AndroidRuntime(17164):    Suppressed: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/messaging/FirebaseMessagingService;
E/AndroidRuntime(17164):        at java.lang.VMClassLoader.findLoadedClass(Native Method)
E/AndroidRuntime(17164):        at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
E/AndroidRuntime(17164):        at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
E/AndroidRuntime(17164):        ... 11 more
E/AndroidRuntime(17164):    Caused by: java.lang.ClassNotFoundException: com.google.firebase.messaging.FirebaseMessagingService
E/AndroidRuntime(17164):        at java.lang.VMClassLoader.findLoadedClass(Native Method)
E/AndroidRuntime(17164):        at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
E/AndroidRuntime(17164):        at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
E/AndroidRuntime(17164):        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
E/AndroidRuntime(17164):        ... 14 more
E/AndroidRuntime(17164):    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.maztur.hunafa-z3QygagDkOlt4fQ6fzLBgw==/base.apk!classes2.dex)
E/AndroidRuntime(17164):        ... 14 more
I/Process (17164): Sending signal. PID: 17164 SIG: 9
Lost connection to device.

【问题讨论】:

    标签: firebase flutter dart firebase-cloud-messaging


    【解决方案1】:

    这很可能是因为您同时添加了 Flutter Firebase 依赖项以及本机依赖项。您不打算添加原生依赖项,因为它们将由 Flutter 依赖项添加。

    从 build.gradle 中删除 firebase-core、firebase-messaging 和设计支持依赖项后重试。

    【讨论】:

    • 好的,谢谢,这行得通。但我需要指出,我必须创建一个新项目才能使其正常工作,如果我只是更改此项目上的代码,则会导致错误。
    • Flutter 依赖 cloud_firestorefirebase_corefirebase_messaging 使用什么版本?您上面的代码不包括版本
    • 我就这样把它留空了
    • 我什至不知道这是可能的 - 我做了一些搜索,结果发现它留空意味着版本“任何”,就像在任何版本中一样,这可以解释为什么你会收到这些错误.这些软件包相互依赖,因此您不能使用随机版本。转到 pub.dev 并获取每个软件包的最新版本。
    • 现在解决了问题。非常感谢你的帮助。当我将版本留空时,我认为它总是会得到最新的包。我不知道它会得到一个随机版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多