Flutter release构建报MissingPluginException 调试/Profile模式正常
问题描述
我正在开发一款集成了多个第三方依赖包的应用。
该应用在debug、profile运行模式下均能正常工作,但生成release构建包安装运行后,部分功能无法正常使用。
经排查,异常源于部分插件无法按预期工作,debug控制台输出的异常日志如下:
E/flutter (14180): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences) E/flutter (14180): E/flutter (14180): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences)
同一次运行中还出现另一处异常:
E/flutter (14180): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: MissingPluginException(No implementation found for method getStorageDirectory on channel plugins.flutter.io/path_provider) E/flutter (14180): #0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:157) E/flutter (14180): <asynchronous suspension> E/flutter (14180): #1 getExternalStorageDirectory (package:path_provider/path_provider.dart:120) E/flutter (14180): <asynchronous suspension> E/flutter (14180): #2 ChatScreenState._init (package:pryzcrybdoctor/Screens/Chats/chat.dart:716) E/flutter (14180): <asynchronous suspension> E/flutter (14180): #3 ChatScreenState._prepare (package:pryzcrybdoctor/Screens/Chats/chat.dart:736) E/flutter (14180): <asynchronous suspension>
我的应用代码中并未直接使用path_provider,该依赖是cached_network_image插件引入的传递依赖。此前应用中的permission_handler插件也触发过相同异常,我移除该插件排查问题后,又出现了摄像头调用失败的问题。最令我困惑的是所有上述异常仅在release模式下出现,debug、profile模式下所有功能均可正常运行。
观察到的异常特征
部分插件似乎仍在使用未完成AndroidX迁移的非AndroidX支持库:只有按照“先构建debug包、再构建profile包、最后构建release包”的顺序操作,才能成功构建release版本。我曾了解到该现象是Jetifier对未完成AndroidX迁移的插件做兼容处理时的典型表现,因此我推测异常根源是存在未完成AndroidX迁移的插件。
已尝试的排查操作
- 多次重新构建应用
- 执行
flutter clean命令后重新开展构建流程 - 执行
flutter pub upgrade升级项目依赖 - 通过Android Studio执行应用构建
- 通过Android Studio执行项目AndroidX迁移操作
如需更多信息或日志可随时告知,感谢各位的帮助。
内容的提问来源于stack exchange,提问作者raider0ne
相关产品推荐
相关产品推荐

