未使用传感器插件却遇setAccelerationSamplingPeriod方法缺失错误求助
问题描述
调试控制台出现以下错误,Firebase Crashlytics也收到该错误上报,未使用任何传感器插件,且已尝试flutter clean、pub get、重启/重装应用等操作,问题仍存在:
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: MissingPluginException(No implementation found for method setAccelerationSamplingPeriod on channel dev.fluttercommunity.plus/sensors/method) E/flutter (20167): #0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:308:7)
解决方案
- 排查间接依赖的传感器插件:执行
flutter pub deps命令,在输出中搜索sensors或sensors_plus,找到间接引入该插件的依赖包。很多第三方库(如广告、分析类SDK)会隐性依赖传感器相关插件。 - 强制排除不必要的依赖:在
pubspec.yaml中添加dependency_overrides,阻止传感器插件被安装:
若检测到的是旧版dependency_overrides: sensors_plus: ^0.0.0sensors插件,替换为sensors: ^0.0.0即可。 - 拦截MethodChannel调用:如果无法定位依赖来源,可在App初始化时注册对应通道并做空实现,避免抛出异常:
import 'package:flutter/services.dart'; void main() { MethodChannel('dev.fluttercommunity.plus/sensors/method').setMethodCallHandler((call) async { if (call.method == 'setAccelerationSamplingPeriod') { return null; } throw MissingPluginException(); }); runApp(MyApp()); } - 深度清理构建缓存:删除
ios/Podfile.lock、android/.gradle文件夹,重新执行flutter pub get;iOS端额外执行pod install,Android端同步Gradle后再重新构建应用。 - 检查Firebase集成:更新Firebase相关依赖到最新稳定版,检查初始化代码中是否开启了与传感器相关的不必要功能,部分Firebase扩展可能会触发此类调用。
内容的提问来源于stack exchange,提问作者Lav Kush
相关产品推荐
相关产品推荐

