长时间打开后无法构建颤振项目
Posted
技术标签:
【中文标题】长时间打开后无法构建颤振项目【英文标题】:Can't build flutter project when opening it after a long time 【发布时间】:2021-11-18 13:52:32 【问题描述】:错误:方法“setMockMessageHandler” 没有为“BasicMessageChannel”类定义。
FAILURE:构建失败并出现异常。
任何帮助将不胜感激
这并没有解决它:颤振酒吧升级
注意:我不想这样做(flutter pub upgrade --major-versions),因为这样做会破坏整个项目并引入更多错误和错误
以下是完整的错误信息:
* 正在运行 Gradle 任务“assembleRelease”... /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:432:15:错误:未定义方法“setMockMessageHandler”对于“BasicMessageChannel”类。
“BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler((动态消息) async ^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:440:15:错误:未定义方法“setMockMessageHandler”对于“BasicMessageChannel”类。 “BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler((动态消息) async ^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:451:15:错误:未定义方法“setMockMessageHandler”对于“BasicMessageChannel”类。 “BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler((动态消息) async ^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:463:15:错误:未定义方法“setMockMessageHandler”对于“BasicMessageChannel”类。 “BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler((动态消息) async ^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:475:15:错误:未定义方法“setMockMessageHandler”对于“BasicMessageChannel”类。 “BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler((动态消息) async ^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:487:15:错误:未定义方法“setMockMessageHandler”对于“BasicMessageChannel”类。 “BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler((动态消息) async ^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:499:15:错误:未定义方法“setMockMessageHandler”对于“BasicMessageChannel”类。 “BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler((动态消息) async ^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:510:15:错误:未定义方法“setMockMessageHandler”对于“BasicMessageChannel”类。 “BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler((动态消息) async ^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:521:15:错误:未定义方法“setMockMessageHandler”对于“BasicMessageChannel”类。 “BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler((动态消息) async ^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:532:15:错误:未定义方法“setMockMessageHandler”对于“BasicMessageChannel”类。 “BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler((动态消息) async ^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:544:15:错误:未定义方法“setMockMessageHandler”对于“BasicMessageChannel”类。 “BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler((动态消息) async ^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/wakelock_platform_interface-0.1.0+1/lib/messages.dart:96:17:错误:方法'setMockMessageHandler'是' t 为“BasicMessageChannel”类定义。 “BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler(null); ^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/wakelock_platform_interface-0.1.0+1/lib/messages.dart:98:17:错误:方法'setMockMessageHandler'是' t 为“BasicMessageChannel”类定义。 “BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler((动态消息) async ^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/wakelock_platform_interface-0.1.0+1/lib/messages.dart:111:17:错误:方法'setMockMessageHandler'是' t 为“BasicMessageChannel”类定义。 “BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler(null); ^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/wakelock_platform_interface-0.1.0+1/lib/messages.dart:113:17:错误:方法'setMockMessageHandler'是' t 为“BasicMessageChannel”类定义。 “BasicMessageChannel”来自“package:flutter/src/services/platform_channel.dart”(“/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart”)。 尝试将名称更正为现有方法的名称,或定义名为“setMockMessageHandler”的方法。 channel.setMockMessageHandler((动态消息) async ^^^^^^^^^^^^^^^^^^^^^FAILURE:构建失败并出现异常。
在哪里: 脚本 'E:\src\flutter\flutter\packages\flutter_tools\gradle\flutter.gradle' 行:1005
出了什么问题: 任务 ':app:compileFlutterBuildRelease' 执行失败。
Process 'command 'E:\src\flutter\flutter\bin\flutter.bat'' 以非零退出值 1 结束
尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。
通过https://help.gradle.org获得更多帮助
在 1m 2s 内构建失败 运行 Gradle 任务 'assembleRelease'... 63.1s Gradle 任务 assembleRelease 失败,退出代码为 1 进程以退出代码 1 结束 *
【问题讨论】:
你试过flutter clean
吗?
是的,还尝试过flutter "pub cache repair"、"flutter pub cache clean",使缓存无效并重新启动,尝试更改gradle版本。没有工作
【参考方案1】:
好的,经过几天的调试,我终于修复了它,结果发现“setMockMessageHandler”是一种从最新的颤振版本中删除的方法,我的一个依赖项正在使用它: 您可以通过将以下依赖项添加到您的颤振 pubspec.yaml 文件中,将其添加回项目中:
pigeon: ^1.0.7
【讨论】:
【参考方案2】:如果您想使用旧版本,请尝试删除每个软件包的 ^
,然后指定您之前使用的版本号。
例子:
来自
device_info_plus: ^2.1.0
到
device_info_plus: 2.1.0
为什么要这样做?插入符号就像范围。如果您有更高版本的软件包,那么如果它没有任何重大更改(我怀疑这里没有看到重大更改),它将被使用。了解更多关于^
它here
【讨论】:
【参考方案3】:此问题是由于较旧的项目结构和较新版本的插件导致冲突。您可以使用导致错误的旧版本插件。或者整体升级您的项目。
您可以在此处了解更多信息: https://flutter.dev/docs/development/packages-and-plugins/plugin-api-migration
【讨论】:
我尝试使用较旧的插件版本“项目最初使用的版本”,但仍然遇到同样的错误 尝试使用 'any' 而不是特定的版本代码。 刚试过,没用,还是一样的错误信息 我多次遇到同样的问题。但是按照上面提到的链接中给出的步骤解决了这个问题。以上是关于长时间打开后无法构建颤振项目的主要内容,如果未能解决你的问题,请参考以下文章