Flutter运行出现PlatformException报错,由Firebase Performance引起如何修复
报错原因
该报错是firebase_performance插件的已知版本兼容问题,触发场景为Flutter热重载/重启时,插件未正确销毁上一次运行创建的方法通道句柄,原生Android端重复注册相同ID的句柄时抛出了非法参数异常。由于该异常不阻塞主业务线程执行,因此不会影响应用的正常功能。
解决方案
- 优先升级插件版本:将pubspec.yaml中
firebase_performance依赖升级到0.9.0及以上的官方稳定版,该版本已经修复了句柄重复注册的缺陷。升级后执行flutter clean、flutter pub get重新构建项目即可解决绝大多数场景的报错。 - 版本兼容受限场景临时规避:如果项目依赖约束无法升级高版本插件,可以在初始化Firebase前添加异常捕获逻辑,避免未处理异常抛出:
import 'package:flutter/foundation.dart'; import 'package:firebase_performance/firebase_performance.dart'; import 'package:firebase_core/firebase_core.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // 调试阶段清理旧实例避免冲突 if (kDebugMode) { try { await FirebasePerformance.instance.setPerformanceCollectionEnabled(false); } catch (e) { // 忽略句柄不存在的异常 } } await Firebase.initializeApp(); // 按需开启性能采集,调试阶段可关闭避免报错 FirebasePerformance.instance.setPerformanceCollectionEnabled(!kDebugMode); runApp(const MyApp()); }
- 同步原生端插件版本:如果升级Flutter端插件后仍有报错,检查Android项目
app/build.gradle中的Firebase Performance Gradle插件版本,与Flutter插件要求的版本保持一致,避免跨端版本不兼容导致的句柄冲突。
内容的提问来源于stack exchange,提问作者Priyansh jain
相关产品推荐
相关产品推荐

