Flutter应用接收Firebase通知崩溃:FlutterFirebaseMessagingService类未找到
解决Flutter FCM接收通知时ClassNotFoundException崩溃问题
问题核心
日志明确抛出ClassNotFoundException: Didn't find class "com.eliteconect.app.io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService",根源是AndroidManifest中手动配置的FCM服务类路径错误——新版本firebase_messaging插件已自动处理服务注册,手动添加的旧路径类实际不存在。
解决方案
1. 移除AndroidManifest中手动添加的FCM服务配置
删除AndroidManifest.xml中这段自定义的服务声明:
<!-- 删掉这段错误的服务配置 --> <service android:name=".io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service>
新版本firebase_messaging会自动向清单中注入正确的服务类,无需手动配置。
2. 简化Firebase初始化代码
MainActivity.kt中无需手动调用FirebaseApp.initializeApp,firebase_core插件会自动完成初始化,移除后避免冲突:
import android.os.Bundle import io.flutter.embedding.android.FlutterActivity class MainActivity: FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 移除 FirebaseApp.initializeApp(this) 这行代码 } }
3. 清理并重建项目
执行以下命令彻底清理缓存,确保依赖和构建产物更新:
flutter clean flutter pub get cd android && ./gradlew clean && ./gradlew assembleDebug cd .. && flutter run
4. 检查依赖版本兼容性(可选)
当前使用的firebase_messaging: ^15.1.3与Flutter 3.24.4兼容,若问题仍存在,可尝试升级到最新稳定版:
flutter pub upgrade firebase_messaging
5. 混淆规则配置(若启用R8/ProGuard)
如果项目开启了代码混淆,需在android/app/proguard-rules.pro中添加FCM相关类的保留规则:
-keep class io.flutter.plugins.firebasemessaging.** { *; } -keep class com.google.firebase.messaging.** { *; }
验证
重新运行应用后发送测试通知,确认应用不再崩溃且能正常接收通知。
内容的提问来源于stack exchange,提问作者Otmane Elb Elbaghzaoui
相关产品推荐
相关产品推荐

