flutter 启动后台服务并导致Dart错误:无法加载模块:无效的内核二进制文件:指示的大小无效

3yhwsihp  于 2023-10-22  发布在  Flutter
关注(0)|答案(3)|浏览(266)

我只是升级flutter到最新版本,flutter doctor -v没有抱怨错误.从Android Studio安装apk时日志输出的错误部分看起来像这样:

Running Gradle task 'assembleDebug'...
✓ Built build/app/outputs/apk/debug/app-debug.apk.
E/flutter (24489): [ERROR:flutter/shell/common/shell.cc(197)] Dart Error: Can't load Kernel binary: Invalid kernel binary: Indicated size is invalid.
E/flutter (24489): [ERROR:flutter/shell/common/engine.cc(198)] Could not prepare to run the isolate.
E/flutter (24489): [ERROR:flutter/shell/common/engine.cc(137)] Engine not prepare and launch isolate.
E/flutter (24489): [ERROR:flutter/shell/common/shell.cc(433)] Could not launch engine with configuration.

I/zygote64(24489): Do full code cache collection, code=124KB, data=87KB
I/zygote64(24489): After code cache collection, code=116KB, data=66KB

我已经尝试删除flutterbin/cache建议的GitHub issue page,和flutter doctor再次,但这不能解决Dart Error:Invalid kernel binary: Indicated size is invalid问题.我的flutter channel是在master不是stable。顺便说一下,这个does always发生了,当第一次尝试运行失败时,第二次尝试运行可以绕过这些错误,只是无法找出原因。

首次编辑

关于Dart Error: Can't load Kernel binary: Invalid kernel binary: Indicated size is invalid的信息太少了。这不是kernel format的问题,而是kernel size的问题,是否有地方可以调整flutter Dart引擎的配置?

二次编辑

我的pubspec.yaml

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2
  intl: ^0.15.7
  provider: ^3.1.0
  shrine_images: ^1.0.0
  url_launcher: 5.1.0
  path_provider: ^1.2.0
  barcode_scan: ^1.0.0
  qr_flutter: ^1.1.1
  font_awesome_flutter: ^8.5.0
  flutter_circular_slider: ^2.5.0
  flutter_swiper: ^1.1.6
  after_layout: ^1.0.7+2
  wave:

  crypto: ^2.1.2
  rxdart: ^0.22.2

  bloc: ^0.15.0
  flutter_bloc: ^0.21.0
  equatable: ^0.2.0
  json_serializable: ^3.2.2
  shared_preferences: ^0.5.3+4
  flutter_slidable: ^0.5.4
  fluttertoast: ^3.1.3

  encrypt: ^3.3.1
  connectivity: ^0.4.4
  animator: ^1.0.0+1

  imei_plugin: ^1.1.4
  photo_view: ^0.7.0

dev_dependencies:
  flutter_test:
    sdk: flutter
  pedantic: ^1.4.0
  build_runner: ^1.6.9

当我在Android Studio界面中按Run按钮两次以绕过我上面提到的错误时,可以安装apk**,但当我将其分发给其他人时,该apk无法正常工作,它只是弹出一个白色屏幕,没有其他内容。

第三次编辑

我也参与了这个GitHub Issue的讨论。

第四次编辑

我创建了一个最小的project来重现这里的问题(目前只关注android platform),并打开一个新的flutter issue

第五次编辑

因为我引用了一个不同于Firebase Cloud Messaging的第三方库来提供后台推送通知服务。我想Dart Error: Can't load Kernel binary: Invalid kernel binary: Indicated size is invalid.是由该服务引起的。当我注解掉启动它的行时,没有显示任何错误。重现此问题的最小project也已相应更新。

dhxwm5r4

dhxwm5r41#

我有同样的问题,并解决了这个问题,通过删除该高速缓存文件夹,并再次安装Flutter。

rm -rf ${FLUTTER_ROOT}/bin/cache
au9on6nz

au9on6nz2#

对我来说,以下步骤解决了这个问题:
1-打开cmd并运行flutter doctor。(如果有问题,请先解决。)
2-如果没有,则将Flutter通道更改为dev。不管你的频道是什么?。如果这是开发频道,则切换到主频道。
3-又是扑医生。如果一切顺利的话。然后运行您的项目。如果它相应地运行,然后再次改变到稳定的通道。

hmae6n7t

hmae6n7t3#

类似的事情发生在我身上,这就是我所做的:
1.只需删除当前的Flutter版本(我使用的是Flutter 3.13.1)。我删除了它并下载了最新版本(当时是Flutter 3.13.7)
1.将您的环境变量更新为提取的Flutter路径。
1.运行flutter doctor以验证一切正常
1.在项目上运行flutter pub get以更新依赖项。

相关问题