flutter - 从 Firebase 发送推送通知时,应用程序不断崩溃
问题描述
我无法从 firebase 向我的应用发送通知,因为每次我这样做时它都会崩溃
它之前显示了最新版本的 firebase_messaging 插件的错误,所以我将其保留为空,以便 ide 将获取最新的包。
这些是我在 pubspec.yaml 文件中的依赖项
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
#firebase_auth: ^0.10.0+1
#firebase_core: ^0.4.0
firebase_database: ^3.0.0
firebase_messaging:
dev_dependencies:
我的推送通知代码如下:
firebaseMessaging.getToken().then((token){
print("Token: $token");
});
firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print('on message $message');
final notification=message['notification'];
setState(() {
messages.add(Message(
title: notification['title'],body: notification['body']
));
});
},
onResume: (Map<String, dynamic> message) async {
print('on resume $message');
},
onLaunch: (Map<String, dynamic> message) async {
print('on launch $message');
},
);
这是我运行程序时的 logcat 摘要:
Syncing files to device SM G960F...
D/ViewRootImpl@df42dca[MainActivity](21660): MSG_WINDOW_FOCUS_CHANGED 1 1
D/InputMethodManager(21660): prepareNavigationBarInfo() DecorView@b273b3b[MainActivity]
D/InputMethodManager(21660): getNavigationBarColor() -855310
D/InputMethodManager(21660): prepareNavigationBarInfo() DecorView@b273b3b[MainActivity]
D/InputMethodManager(21660): getNavigationBarColor() -855310
V/InputMethodManager(21660): Starting input: tba=com.kashyap.user_admin ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
D/InputMethodManager(21660): startInputInner - Id : 0
I/InputMethodManager(21660): startInputInner - mService.startInputOrWindowGainedFocus
D/InputTransport(21660): Input channel constructed: fd=105
D/InputMethodManager(21660): prepareNavigationBarInfo() DecorView@b273b3b[MainActivity]
D/InputMethodManager(21660): getNavigationBarColor() -855310
V/InputMethodManager(21660): Starting input: tba=com.kashyap.user_admin ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false
D/InputMethodManager(21660): startInputInner - Id : 0
D/ViewRootImpl@df42dca[MainActivity](21660): ViewPostIme pointer 0
D/ViewRootImpl@df42dca[MainActivity](21660): ViewPostIme pointer 1
D/ViewRootImpl@df42dca[MainActivity](21660): MSG_WINDOW_FOCUS_CHANGED 0 1
D/InputMethodManager(21660): prepareNavigationBarInfo() DecorView@b273b3b[MainActivity]
D/InputMethodManager(21660): getNavigationBarColor() -855310
D/SurfaceView(21660): windowStopped(true) false 7c74c04 of ViewRootImpl@df42dca[MainActivity]
D/SurfaceView(21660): show() Surface(name=SurfaceView - com.kashyap.user_admin/com.kashyap.user_admin.MainActivity@7c74c04@0[21660])/@0x81cc5ed io.flutter.view.FlutterView{7c74c04 VFE...... ........ 0,0-1440,2960}
D/SurfaceView(21660): surfaceDestroyed callback.size 1 #1 io.flutter.view.FlutterView{7c74c04 VFE...... ........ 0,0-1440,2960}
W/libEGL (21660): EGLNativeWindowType 0x72580fe010 disconnect failed
D/SurfaceView(21660): destroy() Surface(name=SurfaceView - com.kashyap.user_admin/com.kashyap.user_admin.MainActivity@7c74c04@0[21660])/@0x81cc5ed io.flutter.view.FlutterView{7c74c04 VFE...... ........ 0,0-1440,2960}
D/SurfaceView(21660): onWindowVisibilityChanged(4) false 7c74c04 of ViewRootImpl@df42dca[MainActivity]
W/libEGL (21660): EGLNativeWindowType 0x726fef2010 disconnect failed
D/OpenGLRenderer(21660): eglDestroySurface = 0x7266249a00, 0x726fef2000
D/ViewRootImpl@df42dca[MainActivity](21660): Relayout returned: old=[0,0][1440,2960] new=[0,0][1440,2960] result=0x5 surface={valid=false 0} changed=true
D/InputTransport(21660): Input channel destroyed: fd=105
D/SurfaceView(21660): onWindowVisibilityChanged(8) false 7c74c04 of ViewRootImpl@df42dca[MainActivity]
D/ViewRootImpl@df42dca[MainActivity](21660): Relayout returned: old=[0,0][1440,2960] new=[0,0][1440,2960] result=0x1 surface={valid=false 0} changed=false
I/hyap.user_admi(21660): 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.kashyap.user_admin-P6LJr-bNg8zLx2ZhadHMPA==/base.apk!classes2.dex)
I/hyap.user_admi(21660): at java.lang.Class java.lang.VMClassLoader.findLoadedClass(java.lang.ClassLoader, java.lang.String) (VMClassLoader.java:-2)
I/hyap.user_admi(21660): at java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) (ClassLoader.java:738)
I/hyap.user_admi(21660): at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:363)
I/hyap.user_admi(21660): at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
I/hyap.user_admi(21660): at android.app.Service android.app.AppComponentFactory.instantiateService(java.lang.ClassLoader, java.lang.String, android.content.Intent) (AppComponentFactory.java:103)
I/hyap.user_admi(21660): at android.app.Service androidx.core.app.CoreComponentFactory.instantiateService(java.lang.ClassLoader, java.lang.String, android.content.Intent) (CoreComponentFactory.java:68)
I/hyap.user_admi(21660): at void android.app.ActivityThread.handleCreateService(android.app.ActivityThread$CreateServiceData) (ActivityThread.java:3710)
I/hyap.user_admi(21660): at void android.app.ActivityThread.access$1400(android.app.ActivityThread, android.app.ActivityThread$CreateServiceData) (ActivityThread.java:235)
I/hyap.user_admi(21660): at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1784)
I/hyap.user_admi(21660): at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:106)
I/hyap.user_admi(21660): at void android.os.Looper.loop() (Looper.java:214)
I/hyap.user_admi(21660): at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6981)
I/hyap.user_admi(21660): at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
I/hyap.user_admi(21660): at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
I/hyap.user_admi(21660): at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1445)
I/hyap.user_admi(21660):
I/hyap.user_admi(21660): Rejecting re-init on previously-failed class java.lang.Class<io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/messaging/FirebaseMessagingService;
I/hyap.user_admi(21660): at java.lang.Class java.lang.VMClassLoader.findLoadedClass(java.lang.ClassLoader, java.lang.String) (VMClassLoader.java:-2)
I/hyap.user_admi(21660): at java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) (ClassLoader.java:738)
I/hyap.user_admi(21660): at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:363)
I/hyap.user_admi(21660): at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
I/hyap.user_admi(21660): at android.app.Service android.app.AppComponentFactory.instantiateService(java.lang.ClassLoader, java.lang.String, android.content.Intent) (AppComponentFactory.java:103)
I/hyap.user_admi(21660): at android.app.Service androidx.core.app.CoreComponentFactory.instantiateService(java.lang.ClassLoader, java.lang.String, android.content.Intent) (CoreComponentFactory.java:68)
I/hyap.user_admi(21660): at void android.app.ActivityThread.handleCreateService(android.app.ActivityThread$CreateServiceData) (ActivityThread.java:3710)
I/hyap.user_admi(21660): at void android.app.ActivityThread.access$1400(android.app.ActivityThread, android.app.ActivityThread$CreateServiceData) (ActivityThread.java:235)
I/hyap.user_admi(21660): at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1784)
I/hyap.user_admi(21660): at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:106)
I/hyap.user_admi(21660): at void android.os.Looper.loop() (Looper.java:214)
I/hyap.user_admi(21660): at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6981)
I/hyap.user_admi(21660): at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
I/hyap.user_admi(21660): at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
I/hyap.user_admi(21660): at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1445)
I/hyap.user_admi(21660): Caused by: java.lang.ClassNotFoundException: com.google.firebase.messaging.FirebaseMessagingService
I/hyap.user_admi(21660): at java.lang.Class java.lang.VMClassLoader.findLoadedClass(java.lang.ClassLoader, java.lang.String) (VMClassLoader.java:-2)
I/hyap.user_admi(21660): at java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) (ClassLoader.java:738)
I/hyap.user_admi(21660): at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:363)
I/hyap.user_admi(21660): at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
I/hyap.user_admi(21660): at java.lang.Class java.lang.VMClassLoader.findLoadedClass(java.lang.ClassLoader, java.lang.String) (VMClassLoader.java:-2)
I/hyap.user_admi(21660): at java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) (ClassLoader.java:738)
I/hyap.user_admi(21660): at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:363)
I/hyap.user_admi(21660): at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
I/hyap.user_admi(21660): at android.app.Service android.app.AppComponentFactory.instantiateService(java.lang.ClassLoader, java.lang.String, android.content.Intent) (AppComponentFactory.java:103)
I/hyap.user_admi(21660): at android.app.Service androidx.core.app.CoreComponentFactory.instantiateService(java.lang.ClassLoader, java.lang.String, android.content.Intent) (CoreComponentFactory.java:68)
I/hyap.user_admi(21660): at void android.app.ActivityThread.handleCreateService(android.app.ActivityThread$CreateServiceData) (ActivityThread.java:3710)
I/hyap.user_admi(21660): at void android.app.ActivityThread.access$1400(android.app.ActivityThread, android.app.ActivityThread$CreateServiceData) (ActivityThread.java:235)
I/hyap.user_admi(21660): at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1784)
I/hyap.user_admi(21660): at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:106)
I/hyap.user_admi(21660): at void android.os.Looper.loop() (Looper.java:214)
I/hyap.user_admi(21660): at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6981)
I/hyap.user_admi(21660): at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
I/hyap.user_admi(21660): at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
I/hyap.user_admi(21660): at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1445)
I/hyap.user_admi(21660):
D/AndroidRuntime(21660): Shutting down VM
E/AndroidRuntime(21660): FATAL EXCEPTION: main
E/AndroidRuntime(21660): Process: com.kashyap.user_admin, PID: 21660
E/AndroidRuntime(21660): 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.kashyap.user_admin-P6LJr-bNg8zLx2ZhadHMPA==/base.apk"],nativeLibraryDirectories=[/data/app/com.kashyap.user_admin-P6LJr-bNg8zLx2ZhadHMPA==/lib/arm64, /data/app/com.kashyap.user_admin-P6LJr-bNg8zLx2ZhadHMPA==/base.apk!/lib/arm64-v8a, /system/lib64]]
E/AndroidRuntime(21660): at android.app.ActivityThread.handleCreateService(ActivityThread.java:3715)
E/AndroidRuntime(21660): at android.app.ActivityThread.access$1400(ActivityThread.java:235)
E/AndroidRuntime(21660): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1784)
E/AndroidRuntime(21660): at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime(21660): at android.os.Looper.loop(Looper.java:214)
E/AndroidRuntime(21660): at android.app.ActivityThread.main(ActivityThread.java:6981)
E/AndroidRuntime(21660): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(21660): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
E/AndroidRuntime(21660): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
E/AndroidRuntime(21660): Caused by: java.lang.ClassNotFoundException: Didn't find class "io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService" on path: DexPathList[[zip file "/data/app/com.kashyap.user_admin-P6LJr-bNg8zLx2ZhadHMPA==/base.apk"],nativeLibraryDirectories=[/data/app/com.kashyap.user_admin-P6LJr-bNg8zLx2ZhadHMPA==/lib/arm64, /data/app/com.kashyap.user_admin-P6LJr-bNg8zLx2ZhadHMPA==/base.apk!/lib/arm64-v8a, /system/lib64]]
E/AndroidRuntime(21660): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
E/AndroidRuntime(21660): at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
E/AndroidRuntime(21660): at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
E/AndroidRuntime(21660): at android.app.AppComponentFactory.instantiateService(AppComponentFactory.java:103)
E/AndroidRuntime(21660): at androidx.core.app.CoreComponentFactory.instantiateService(CoreComponentFactory.java:68)
E/AndroidRuntime(21660): at android.app.ActivityThread.handleCreateService(ActivityThread.java:3710)
E/AndroidRuntime(21660): ... 8 more
E/AndroidRuntime(21660): Suppressed: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/firebase/messaging/FirebaseMessagingService;
E/AndroidRuntime(21660): at java.lang.VMClassLoader.findLoadedClass(Native Method)
E/AndroidRuntime(21660): at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
E/AndroidRuntime(21660): at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
E/AndroidRuntime(21660): ... 12 more
E/AndroidRuntime(21660): Caused by: java.lang.ClassNotFoundException: com.google.firebase.messaging.FirebaseMessagingService
E/AndroidRuntime(21660): at java.lang.VMClassLoader.findLoadedClass(Native Method)
E/AndroidRuntime(21660): at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
E/AndroidRuntime(21660): at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
E/AndroidRuntime(21660): at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
E/AndroidRuntime(21660): ... 15 more
E/AndroidRuntime(21660): 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.kashyap.user_admin-P6LJr-bNg8zLx2ZhadHMPA==/base.apk!classes2.dex)
E/AndroidRuntime(21660): ... 15 more
I/Process (21660): Sending signal. PID: 21660 SIG: 9
Lost connection to device.
解决方案
当我添加lates firebase核心插件并启用androidx并将gradle版本从5.1.1更改为4.10.2并将项目级别build.gradle中的gradle依赖项更改为时,代码开始工作
classpath 'com.android.tools.build:gradle:3.3.0'
代替:
classpath 'com.android.tools.build:gradle:3.4.0'
推荐阅读
- swift - 为什么从 UICollectionView 类调用委托函数时我的 UIViewController 没有更新
- python - Python 过程的顺序(何时将变量放在括号中与将其放在句点之前)
- json - 如何使用 Fluentd 嵌套 json 日志?
- android - Kotlin Android MVVM RecyclerView 不显示任何数据
- javascript - 如何解决布尔诺言
- c# - 如何使用 IsFaulted、IsCanceled 和 IsCompleted 测试用例测试“ToListAsync”
- sql - 32 位 ODBC 驱动程序连接问题
- html - 使用 XPath 将 HTML 中的信息提取/解析到 Google 表格中
- c++ - 如何添加预防措施以绕过未注册的 Microsoft.ACE.OLEDB.12.0?
- jquery - 无法从 Zend Framework 3 向 Ajax 调用发送 JSON 响应