解决attempted to register plugin but it was already registered with this flutterengine
场景
Flutter版本更新后,运行出现以下问题,App闪退。
W/FlutterEngineCxnRegstry(10678): Attempted to register plugin (io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry$ShimRegistrarAggregate@3777b26) but it was already registered with this FlutterEngine (io.flutter.embedding.engine.FlutterEngine@6c93367).
E/AndroidRuntime(10678): FATAL EXCEPTION: main
E/AndroidRuntime(10678): Process: com.example.firstflutterapp, PID: 10678
E/AndroidRuntime(10678): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.firstflutterapp/com.example.firstflutterapp.MainActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'void io.flutter.plugin.common.BinaryMessenger.setMessageHandler(java.lang.String, io.flutter.plugin.common.BinaryMessenger$BinaryMessageHandler)' on a null object reference
E/AndroidRuntime(10678): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3898)
E/AndroidRuntime(10678): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4081)
E/AndroidRuntime(10678): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
E/AndroidRuntime(10678): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
E/AndroidRuntime(10678): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
E/AndroidRuntime(10678): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2462)
E/AndroidRuntime(10678): at android.os.Handler.dispatchMessage(Handler.java:110)
E/AndroidRuntime(10678): at android.os.Looper.loop(Looper.java:219)
E/AndroidRuntime(10678): at android.app.ActivityThread.main(ActivityThread.java:8393)
E/AndroidRuntime(10678): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(10678): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
E/AndroidRuntime(10678): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
E/AndroidRuntime(10678): Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void io.flutter.plugin.common.BinaryMessenger.setMessageHandler(java.lang.String, io.flutter.plugin.common.BinaryMessenger$BinaryMessageHandler)' on a null object reference
E/AndroidRuntime(10678): at io.flutter.plugin.common.MethodChannel.setMethodCallHandler(MethodChannel.java:119)
E/AndroidRuntime(10678): at com.jzoom.amaplocation.AmapLocationPlugin.registerWith(AmapLocationPlugin.java:54)
E/AndroidRuntime(10678): at io.flutter.plugins.GeneratedPluginRegistrant.registerWith(GeneratedPluginRegistrant.java:18)
E/AndroidRuntime(10678): at com.example.firstflutterapp.MainActivity.configureFlutterEngine(MainActivity.kt:31)
E/AndroidRuntime(10678): at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onAttach(FlutterActivityAndFragmentDelegate.java:180)
E/AndroidRuntime(10678): at io.flutter.embedding.android.FlutterActivity.onCreate(FlutterActivity.java:409)
E/AndroidRuntime(10678): at android.app.Activity.performCreate(Activity.java:8121)
E/AndroidRuntime(10678): at android.app.Activity.performCreate(Activity.java:8109)
E/AndroidRuntime(10678): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1320)
E/AndroidRuntime(10678): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3871)
E/AndroidRuntime(10678): ... 11 more
解决方案
根据错误描述,是因为注册plugin时提示已经被注册过了了。
涉及到插件,需要看官方文档。https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects。
以下是我的MainActivity.kt
class MainActivity: FlutterActivity() {override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {super.configureFlutterEngine(flutterEngine)GeneratedPluginRegistrant.registerWith(flutterEngine)}
}
这是官方代码
+ @Override
+ public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
+ GeneratedPluginRegistrant.registerWith(flutterEngine);
+ new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
+ .setMethodCallHandler(
+ (call, result) -> {
+ // Your existing code
+ }
+ );
+ }
发现多了个super方法,查看FlutterActivity源码发现,configureFlutterEngine方法已经调用过了GeneratedPluginRegistrant.registerWith(flutterEngine),所以我们只需要删除super.configureFlutterEngine(flutterEngine)即可。
class MainActivity: FlutterActivity() {override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {//super.configureFlutterEngine(flutterEngine)GeneratedPluginRegistrant.registerWith(flutterEngine)}
}
解决attempted to register plugin but it was already registered with this flutterengine相关推荐
- android 解决Error:This Gradle plugin requires Studio 3.0 minimum
今天,继续简单讲讲如何解决Error:This Gradle plugin requires Studio 3.0 minimum. 之前讲过这个问题,有点不全面,所以再记录一下. 原因:项目用的是3 ...
- android 解决Error:This Gradle plugin requires a newer IDE able to request IDE model level 3. For Andro
今天,简单讲讲android studio导入工程时,出现报错Error:This Gradle plugin requires a newer IDE able to request IDE mod ...
- gym注册customer env 报错:Attempted to register malformed environment ID:My_env
跟随着gym的教程,准备把自己写的环境注册在gym的envs上面, 过程如下: 第⼀步,将我们⾃⼰的环境⽂件(笔者创建的⽂件名为 Myenv.py,类名为ReEnv ) 拷⻉到你的gym安装⽬录/gy ...
- 解决Jenkins Email Extension Plugin发送邮件失败
昨天用来测试的虚拟机不知道怎么回事,Firefox自动升级到8.0.结果就是我的WebDriver PythonBindings 在FF8下面是用不了的.现象就是,实例化一个Firefox Drive ...
- 解决:Cannot resolve plugin org.apache.maven.plugins:maven-compiler-plugin:2.3.2问题
出现Cannot resolve plugin org.apache.maven.plugins这类的问题原因基本都是一样的,都是导入本地仓库时出错,出错的原因可能是版本原因,也有其他原因. 解决办法 ...
- qt android meta data,Qt小技巧5.解决Failed to extract plugin meta data问题
使用Qt插件开发时,在debug模式下加载插件时遇到如下问题: "Failed to extract plugin meta data from './ICE-PCPUd. dll'&quo ...
- 解决“attempted relative import with no known parent package“的错误
用pycharm写代码时,当import无法识别同一个文件夹中的文件,提示"attempted relative import with no known parent package&qu ...
- MVC.Net: 解决Attempted to access an unloaded appdomain的问题
在C#中尝试获取AD帐号信息时,会随机出现Attempted to access an unloaded appdomain的问题,解决方法如下: 将 principalContext = new P ...
- 彻底解决gradle与gradle plugin匹配关系以及gradle下载缓慢的问题
文章目录 问题引入 原因 解决方法 1. 检查gradle版本和gradle插件版本是否匹配 2. 解决gradle下载慢的问题 手动下载gradle包 替换依赖仓库 方法一:在build.gradl ...
最新文章
- mysql 变量is null 和 not exists区别
- XML学习第三节 Schema介绍
- 自己的总结(你必须知道的C 495个问题)
- vue3.x通过ref属性获取元素
- 方程求解(洛谷P1689题题解,Java语言描述)
- Hadoop Hbase安装配置
- FATFS Copy Files
- python数据分析课后习题
- matlab向量乘法要加.,matlab中的矩阵与向量运算
- Android 串口蓝牙通信开发Java版本
- 天池比赛:工业蒸汽量预测
- 致初学者:如何学好Python这门编程语言?
- 【Office】新建的EXCEL打不开,而存在的EXCEL能打开
- 布袋除尘器过滤风速多少_布袋除尘器处理风量、过滤风速、过滤面积怎么算?这篇全了...
- 整车nvh培训入门 仿真 ,基于Hyperworks 掌握思路 细节
- 2020-4-5 深度学习笔记17 - 蒙特卡罗方法 3 ( 马尔可夫链蒙特卡罗方法MCMC-先验分布/后验分布/似然估计,马尔可夫性质)
- 网页制作:一个简易美观的登录界面
- RXSwift进阶:RXSwift的底层核心逻辑解析
- springboot一键启动
- 一文搞懂matplotlib中的颜色设置
热门文章
- android 镂空字体下载,Android开发TextvView实现镂空字体效果
- 惠普Z820安装win10系统攻略(固态作为系统盘)——思小瓜
- Qt程序无法启动,debug时提示During startup program exited with code 0xc0000135
- java应用程序接口批量访问_spring中使用mybatis实现批量插入的示例代码
- 计算机在教育领域中的应用方式,计算机技术在教育中的应用
- FFmpeg合并音频文件和视频文件
- 探索 Flutter 模拟事件触发 | 开发者说·DTalk
- html中去除下划线,下划线怎么取消?
- MATLAB中强行终止执行程序的4种方法
- 单片机入门学习笔记6:新唐单片机N76E003