长时间打开后无法构建 flutter 项目
Can't build flutter project when opening it after a long time
错误:方法'setMockMessageHandler'
没有为 class 'BasicMessageChannel'.
定义
失败:构建失败,出现异常。
如有任何帮助,我们将不胜感激
这并没有解决问题:flutter pub 升级
注意:我不想这样做 (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' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler((动态消息)异步{
^^^^^^^^^^^^^^^^^^^^^^
/E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:440:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler((动态消息)异步{
^^^^^^^^^^^^^^^^^^^^^^
/E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:451:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler((动态消息)异步{
^^^^^^^^^^^^^^^^^^^^^^
/E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:463:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler((动态消息)异步{
^^^^^^^^^^^^^^^^^^^^^^
/E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:475:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler((动态消息)异步{
^^^^^^^^^^^^^^^^^^^^^^
/E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:487:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler((动态消息)异步{
^^^^^^^^^^^^^^^^^^^^^^
/E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:499:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler((动态消息)异步{
^^^^^^^^^^^^^^^^^^^^^^
/E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:510:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler((动态消息)异步{
^^^^^^^^^^^^^^^^^^^^^^
/E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:521:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler((动态消息)异步{
^^^^^^^^^^^^^^^^^^^^^^
/E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:532:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler((动态消息)异步{
^^^^^^^^^^^^^^^^^^^^^^
/E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:544:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler((动态消息)异步{
^^^^^^^^^^^^^^^^^^^^^^
/E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/wakelock_platform_interface-0.1.0+1/lib/messages.dart:96:17: 错误:方法 'setMockMessageHandler' 是'为 class 'BasicMessageChannel'.
定义
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler(空);
^^^^^^^^^^^^^^^^^^^^^^
/E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/wakelock_platform_interface-0.1.0+1/lib/messages.dart:98:17: 错误:方法 'setMockMessageHandler' 不是'为 class 'BasicMessageChannel'.
定义
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler((动态消息)异步{
^^^^^^^^^^^^^^^^^^^^^^
/E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/wakelock_platform_interface-0.1.0+1/lib/messages.dart:111:17: 错误:方法 'setMockMessageHandler' 不是'为 class 'BasicMessageChannel'.
定义
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler(空);
^^^^^^^^^^^^^^^^^^^^^^
/E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/wakelock_platform_interface-0.1.0+1/lib/messages.dart:113:17: 错误:方法 'setMockMessageHandler' 不是'为 class 'BasicMessageChannel'.
定义
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。
尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。
channel.setMockMessageHandler((动态消息)异步{
^^^^^^^^^^^^^^^^^^^^^^
失败:构建失败,出现异常。
其中:
脚本 'E:\src\flutter\flutter\packages\flutter_tools\gradle\flutter.gradle' 行:1005
出了什么问题:
任务 ':app:compileFlutterBuildRelease' 执行失败。
Process 'command 'E:\src\flutter\flutter\bin\flutter.bat'' finished with non-zero exit value 1
尝试:
运行 使用 --stacktrace 选项获取堆栈跟踪。 运行 使用 --info 或 --debug 选项以获得更多日志输出。 运行 使用 --scan 以获得完整的见解。
- 获取更多帮助
1 米 2 秒后构建失败
运行宁Gradle任务'assembleRelease'... 63.1s
Gradle 任务 assembleRelease 失败,退出代码为 1
进程结束,退出代码为 1
*
出现此问题是由于较旧的项目结构和较新版本的插件导致冲突。您可以使用导致错误的旧版本插件。或者整体升级您的项目。
您可以在此处了解更多信息:
https://flutter.dev/docs/development/packages-and-plugins/plugin-api-migration
如果您想使用旧版本,请尝试删除每个包的 ^
,然后指定您之前使用的版本号。
示例:
来自
device_info_plus: ^2.1.0
到
device_info_plus: 2.1.0
为什么要这样做?插入符号就像范围。如果您有更高版本的软件包,那么如果它没有任何重大更改,则会使用它(我怀疑未能在此处看到重大更改)。详细了解 ^
它
好的,经过几天的尝试调试,我终于修复了它,原来“setMockMessageHandler”是一种从最新的 flutter 版本中删除的方法,我的一个依赖项正在使用它:
您可以通过将以下依赖项添加到您的 flutter pubspec.yaml 文件中来将其添加回项目中:
pigeon: ^1.0.7
你试过吗?
flutter clean
flutter pub get
flutter pub cache repair
flutter pub upgrade
错误:方法'setMockMessageHandler' 没有为 class 'BasicMessageChannel'.
定义失败:构建失败,出现异常。
如有任何帮助,我们将不胜感激
这并没有解决问题:flutter pub 升级
注意:我不想这样做 (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' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler((动态消息)异步{ ^^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:440:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler((动态消息)异步{ ^^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:451:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler((动态消息)异步{ ^^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:463:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler((动态消息)异步{ ^^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:475:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler((动态消息)异步{ ^^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:487:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler((动态消息)异步{ ^^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:499:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler((动态消息)异步{ ^^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:510:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler((动态消息)异步{ ^^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:521:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler((动态消息)异步{ ^^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:532:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler((动态消息)异步{ ^^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/video_player_platform_interface-2.2.0/lib/messages.dart:544:15: 错误:方法 'setMockMessageHandler' 不是定义为 class 'BasicMessageChannel'.
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler((动态消息)异步{ ^^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/wakelock_platform_interface-0.1.0+1/lib/messages.dart:96:17: 错误:方法 'setMockMessageHandler' 是'为 class 'BasicMessageChannel'. 定义
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler(空); ^^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/wakelock_platform_interface-0.1.0+1/lib/messages.dart:98:17: 错误:方法 'setMockMessageHandler' 不是'为 class 'BasicMessageChannel'. 定义
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler((动态消息)异步{ ^^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/wakelock_platform_interface-0.1.0+1/lib/messages.dart:111:17: 错误:方法 'setMockMessageHandler' 不是'为 class 'BasicMessageChannel'. 定义
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler(空); ^^^^^^^^^^^^^^^^^^^^^^ /E:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/wakelock_platform_interface-0.1.0+1/lib/messages.dart:113:17: 错误:方法 'setMockMessageHandler' 不是'为 class 'BasicMessageChannel'. 定义
- 'BasicMessageChannel' 来自 'package:flutter/src/services/platform_channel.dart' ('/E:/src/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart')。 尝试将名称更正为现有方法的名称,或定义一个名为 'setMockMessageHandler' 的方法。 channel.setMockMessageHandler((动态消息)异步{ ^^^^^^^^^^^^^^^^^^^^^^
失败:构建失败,出现异常。
其中: 脚本 'E:\src\flutter\flutter\packages\flutter_tools\gradle\flutter.gradle' 行:1005
出了什么问题: 任务 ':app:compileFlutterBuildRelease' 执行失败。
Process 'command 'E:\src\flutter\flutter\bin\flutter.bat'' finished with non-zero exit value 1
尝试: 运行 使用 --stacktrace 选项获取堆栈跟踪。 运行 使用 --info 或 --debug 选项以获得更多日志输出。 运行 使用 --scan 以获得完整的见解。
- 获取更多帮助
1 米 2 秒后构建失败 运行宁Gradle任务'assembleRelease'... 63.1s Gradle 任务 assembleRelease 失败,退出代码为 1 进程结束,退出代码为 1 *
出现此问题是由于较旧的项目结构和较新版本的插件导致冲突。您可以使用导致错误的旧版本插件。或者整体升级您的项目。
您可以在此处了解更多信息: https://flutter.dev/docs/development/packages-and-plugins/plugin-api-migration
如果您想使用旧版本,请尝试删除每个包的 ^
,然后指定您之前使用的版本号。
示例:
来自
device_info_plus: ^2.1.0
到
device_info_plus: 2.1.0
为什么要这样做?插入符号就像范围。如果您有更高版本的软件包,那么如果它没有任何重大更改,则会使用它(我怀疑未能在此处看到重大更改)。详细了解 ^
它
好的,经过几天的尝试调试,我终于修复了它,原来“setMockMessageHandler”是一种从最新的 flutter 版本中删除的方法,我的一个依赖项正在使用它: 您可以通过将以下依赖项添加到您的 flutter pubspec.yaml 文件中来将其添加回项目中:
pigeon: ^1.0.7
你试过吗?
flutter clean
flutter pub get
flutter pub cache repair
flutter pub upgrade