You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4构建Flutter应用遇SkSL编译失败问题求助

问题描述
  • 设备:树莓派,系统镜像为2022-09-22-raspios-bullseye-arm64.img.xz
  • 系统内核信息:Linux raspberrypi 5.15.61-v8+ #1579 SMP PREEMPT Fri Aug 26 11:16:44 BST 2022 aarch64 GNU/Linux

操作步骤

执行命令创建Flutter项目:

pi@raspberrypi:~ $ flutter create my_app
Building flutter tool...
Waiting for another flutter command to release the startup lock...
Creating project my_app...
Running "flutter pub get" in my_app...
Resolving dependencies in my_app... (3.0s)
+ async 2.10.0
+ boolean_selector 2.1.1
+ characters 1.2.1
+ clock 1.1.1
+ collection 1.17.0
+ cupertino_icons 1.0.5
+ fake_async 1.3.1
+ flutter 0.0.0 from sdk flutter
+ flutter_lints 2.0.1
+ flutter_test 0.0.0 from sdk flutter
+ js 0.6.6
+ lints 2.0.1
+ matcher 0.12.14
+ material_color_utilities 0.2.0
+ meta 1.8.0
+ path 1.8.3
+ sky_engine 0.0.99 from sdk flutter
+ source_span 1.9.1
+ stack_trace 1.11.0
+ stream_channel 2.1.1
+ string_scanner 1.2.0
+ term_glyph 1.2.1
+ test_api 0.4.17
+ vector_math 2.1.4
Changed 24 dependencies in my_app!
Wrote 129 files.

All done!
You can find general documentation for Flutter at: https://docs.flutter.dev/
Detailed API documentation is available at: https://api.flutter.dev/
If you prefer video documentation, consider: https://www.youtube.com/c/flutterdev

运行错误

执行flutter run时出现以下错误:

pi@raspberrypi:~/my_app $ flutter run
Launching lib/main.dart on Linux in debug mode...
ERROR: Compilation to SkSL failed.
/home/pi/snap/flutter/common/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag: warning: (version, profile) forced to be (460, core), while in source code it is (320, es)
/home/pi/snap/flutter/common/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag:9: error: '#include' : Included file not found. for header name: flutter/runtime_effect.glsl
/home/pi/snap/flutter/common/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag:93: error: 'FlutterFragCoord' : no matching overloaded function found
/home/pi/snap/flutter/common/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag:93: error: '=' :  cannot convert from ' const float' to ' temp 2-component vector of float'
ERROR: Target debug_bundle_linux-arm64_assets failed: ShaderCompilerException: Shader compilation of "/home/pi/snap/flutter/common/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag" to "/home/pi/my_app/build/flutter_assets/shaders/ink_sparkle.frag" failed with exit code 1.
/home/pi/snap/flutter/common/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag: warning: (version, profile) forced to be (460, core), while in source code it is (320, es)
/home/pi/snap/flutter/common/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag:9: error: '#include' : Included file not found. for header name: flutter/runtime_effect.glsl
/home/pi/snap/flutter/common/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag:93: error: 'FlutterFragCoord' : no matching overloaded function found
/home/pi/snap/flutter/common/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag:93: error: '=' :  cannot convert from ' const float' to ' temp 2-component vector of float'
Building Linux application...                                            
Exception: Build process failed

Flutter环境信息

pi@raspberrypi:~/my_app $ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, 3.7.0-13.0.pre.31, on Debian GNU/Linux 11 (bullseye) 5.15.61-v8+, locale en_GB.UTF-8)
[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.

[✗] Chrome - develop for the web (Cannot find Chrome executable at google-chrome)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[✓] Linux toolchain - develop for Linux desktop
[!] Android Studio (not installed)
[✓] Connected device (1 available)
[✓] HTTP Host Availability

! Doctor found issues in 3 categories.
解决方案

这个错误源于Flutter master分支的Shader编译器在ARM64架构树莓派上的兼容性问题,可尝试以下几种解决办法:

方法1:切换到Flutter稳定分支

当前使用的master分支包含未稳定的新特性,易出现兼容性问题,切换到稳定分支:

flutter channel stable
flutter upgrade

之后重新运行flutter run尝试启动应用。

方法2:禁用SkSL编译优化

临时跳过Shader的SkSL预编译过程,运行命令时添加参数:

flutter run --no-enable-skshader-warmup

方法3:更新系统图形驱动

确保树莓派安装最新Mesa图形驱动,更新系统依赖:

sudo apt update && sudo apt upgrade -y
sudo apt install mesa-utils libgl1-mesa-glx

更新完成后重启树莓派,再尝试运行应用。

方法4:手动修改Shader文件(临时应急方案)

若上述方法无效,可手动修改报错的Shader文件,但后续SDK升级会覆盖修改,需谨慎操作:

  1. 打开/home/pi/snap/flutter/common/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag
  2. 将第9行的#include <flutter/runtime_effect.glsl>替换为Flutter SDK中flutter/lib/src/runtime目录下runtime_effect.glsl的实际内容
  3. 修复第93行FlutterFragCoord的参数类型匹配问题

内容的提问来源于stack exchange,提问作者Jaime Roman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 00:20:45