好,这个我们直接来一版工程师视角、能落地的对比。
不讲口号,只讲为什么会换、差在哪、你该怎么选。
Skia 是通用 2D 引擎,灵活但不可预测;Impeller 是 Flutter 定制的现代 GPU 管线,功能受限但帧稳定。
👉 长期方向:Impeller;当前兜底:Skia(主要在 Android)。
| 维度 | Skia | Impeller |
|---|---|---|
| 定位 | 通用 2D 渲染引擎 | Flutter 专用渲染引擎 |
| 使用者 | Android / Chrome / Flutter | 仅 Flutter |
| 设计目标 | 功能完整 | 性能可预测 |
| 灵活性 | 极高 | 有意受限 |
| 未来方向 | 逐步边缘化(Flutter 内) | 主线 |
Widget
↓
Layer Tree
↓
Skia
↓
OpenGL ES / Vulkan
↓
GPU
Skia 在 运行时:
👉 首次动画 / 新效果 = 可能卡一帧(Shader Jank)
Widget
↓
Layer Tree
↓
Impeller
↓
Vulkan(Android) / Metal(iOS)
↓
GPU
首次:
需要即时编译 Shader
即使做了 warm-up 也不 100% 可靠
👉 这一个点,就足以让 Flutter 必须换引擎。
| 平台 | Skia | Impeller |
|---|---|---|
| Android | OpenGL ES / Vulkan | Vulkan(主) |
| iOS | OpenGL ES / Metal | Metal only |
| 驱动差异 | 大 | 小 |
| 可控性 | 中 | 高 |
Impeller 主动放弃 OpenGL
原因:不可控、老驱动、Bug 多。
“Flutter 用不到的,我不支持。”
代价:
| 场景 | Skia | Impeller |
|---|---|---|
| 跨设备 | 偶尔差异 | 高度一致 |
| 120Hz | 偶尔掉帧 | 更稳 |
| 首帧 | 可能抖 | 稳定 |
Skia 追求“什么都能画”,Impeller 追求“永远不卡”。Flutter 选择 Impeller,是为了把 UI 渲染从“概率稳定”变成“确定稳定”。
如果你愿意,我可以继续深入到更硬核的层面,比如:
你挑一个,我继续 🔥