在发布应用程序中Flutter MissingPluginException(没有在通道上找到getAll方法的实现)



我得到了MissingPlugin错误。我发现了不少关于这个错误的帖子。但我的情况有点不同。首先,我的项目在模拟器中运行良好,只有当我在实体Android上运行我的发布应用时才会出现错误。其次,这个错误不仅仅与一个包有关。我首先得到的错误是MissingPluginException(在通道plugins.flutter.io/shared_preferences上没有找到getAll方法的实现)在我放入代码之后,我发现只有处理shared_preferences的问题。然后我得到了错误MissingPluginException(在通道plugins.flutter.io/package_info上没有找到getAll方法的实现)显然,这个错误不只是链接到一个包,如shared_preferences。

任何想法?我怎样才能解决这个问题?

FlutterActivity上没有super.configureFlutterEngine(flutterEngine)

class MainActivity : FlutterActivity() {    
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine) //missing this

}
}

这是很多人都会犯的典型错误。你要做的是将繁重的工作抽象到一个隔离,但是flutter隔离不能运行插件,除了flutter和dart sdk中的api。

你有几个选择。

  1. 有一个我可以推荐的插件,它不支持所有的flutter(第三方)插件,但值得一试。https://pub.dev/packages/flutter_isolate

此插件创建的隔离可以自动封送插件工作回主隔离,而不会冒base flutter隔离通常会抛出的运行时异常的风险。

  1. 仅运行允许在基本颤振隔离中运行的重进程的源代码,仅使用颤振&直接Dart SDK api。其余的代码依赖于插件,将需要中继回主隔离,UI将不得不等待使用FutureBuilder的结果。

尝试了一些不同的解决方案,如清理和重建。不会收缩等。

最终在构建中。gradle,我更改了

类路径的com.android.tools.build: gradle: 4.0.0"来类路径的com.android.tools.build: gradle: 3.5.1 '

之后,apk大小是之前的50%,应用程序加载正常。

所以可能是新的构建工具。

我在一个旧的扑动应用程序上有同样的错误,运行在稳定的3.0.2上,没有null安全。因此,我使用shared_preferences : ^5.4在调试中工作得很好,但用于在Android上的发布模式下崩溃插件

添加

minifyEnabled false
shrinkResources false

android/app/build.gradle修复问题

有同样的问题,通过删除多余的插件指令修复:

:

flutter:
uses-material-design: true
plugin:
platforms:
android:
package: com.kasem.receive_sharing_intent
pluginClass: ReceiveSharingIntentPlugin
assets:
- assets/i18n/

:后

flutter:
uses-material-design: true
assets:
- assets/i18n/

最新更新