【问题标题】: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版本。没有工作

标签: flutter dart flutter-dependencies


【解决方案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' 而不是特定的版本代码。
      • 刚试过,没用,还是一样的错误信息
      • 我多次遇到同样的问题。但是按照上面提到的链接中给出的步骤解决了这个问题。
      猜你喜欢
      • 2019-03-11
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 2018-08-21
      • 2020-01-12
      • 2022-10-08
      • 2020-10-19
      相关资源
      最近更新 更多