Android端Flutter应用接收Firebase推送时无响应崩溃求助
Flutter Android端接收Firebase推送通知时崩溃(iOS正常)
崩溃现象
- 应用无论处于前台还是后台,接收Firebase推送通知时都会弹出「<应用名称> isn't responding」提示框,提供“等待”或“关闭应用”选项。
崩溃后日志
Thread[2,tid=3874,WaitingInMainSignalCatcherLoop,Thread*=0xb40000711baf8be0,peer=0x140048b8,"Signal Catcher"]: reacting to signal 3 I/24.bizconnect2( 3862): I/24.bizconnect2( 3862): Wrote stack traces to tombstoned
当前环境配置
- Flutter Version: 3.27.4 (stable通道)
- Android Gradle Plugin: 8.2.0
- Kotlin Version: 1.9.0
- google-services Plugin: 4.4.2
- Firebase Messaging Version: 15.2.5
- 测试设备:多款Android真机和模拟器
相关代码
main.dart
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); FirebaseMessaging.onBackgroundMessage(firebaseMessagingBackgroundHandler); final pushService = PushNotificationService(); pushService.requestNotificationPermissions(); pushService.init(); runApp(MyApp()); pushService.getFcmToken(); }
后台消息处理器
@pragma('vm:entry-point') Future<void> firebaseMessagingBackgroundHandler(RemoteMessage message) async { print('Handling background message: ${message.messageId}'); }
Android应用级build.gradle
plugins { id "com.android.application" id "kotlin-android" id "dev.flutter.flutter-gradle-plugin" id "com.google.gms.google-services" } dependencies { implementation platform('com.google.firebase:firebase-bom:32.7.0') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-messaging' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' }
AndroidManifest.xml相关配置
<service android:name=".MyFirebaseMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_notification" /> <meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="high_importance_channel" />
已尝试的排查手段
- 确认google-services.json已放置在android/app目录下
- 验证google-services.json中的包名与应用包名一致
- 更新所有Firebase依赖到最新版本
- 检查Manifest中FCM服务声明正确
- 尝试使用/不使用Firebase BOM
- 多次清理并重建项目
- 验证Flutter Firebase插件在Dart代码中初始化正确
- 尝试降级Google Services插件版本
- 确认Manifest包含必要的Firebase消息服务和权限
- 测试带/不带自定义Deep Link payload的推送
- 确保firebaseMessagingBackgroundHandler添加了@pragma('vm:entry-point')注解
- 验证前台本地通知处理逻辑正常
- 移除不必要的平台特定逻辑(无效果)
- 尝试使用极简版PushNotificationService配置(仍崩溃)
- 确认ic_notification.png已正确放置在res/drawable目录
- 确认FirebaseMessagingService.java存在
- 使用FlutterLocalNotificationsPlugin处理前台通知显示
- 尝试在顶层后台处理器中调用await Firebase.initializeApp
补充说明
执行以下命令未得到明确崩溃原因:
~/Library/Android/sdk/platform-tools/adb logcat | grep -E "(flutter|Firebase|Exception|Error)" ~/Library/Android/sdk/platform-tools/adb logcat | grep Firebase
内容的提问来源于stack exchange,提问作者Nma Ndidi
相关产品推荐
相关产品推荐

