长时间打开后无法构建颤振项目

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' 而不是特定的版本代码。 刚试过,没用,还是一样的错误信息 我多次遇到同样的问题。但是按照上面提到的链接中给出的步骤解决了这个问题。

以上是关于长时间打开后无法构建颤振项目的主要内容,如果未能解决你的问题,请参考以下文章

这需要很长时间

颤振问题中的 Firebase 实施

数据库项目需要很长时间才能打开

无法使用 PathProvider 依赖项构建颤振项目

XCode bot需要很长时间才能集成

无法在颤振中使用构建运行器生成 mobx