# 跨端方案速查表（Kuikly vs Flutter vs RN vs Compose MP）

打印出来贴墙上，面试 / 选型时用。

## 1. 一句话定位

| 框架 | 定位 |
|------|------|
| **Kuikly** | 腾讯 · Kotlin + 原生渲染 · 6 端通用 · 包小性能强 |
| **Flutter** | Google · Dart + Skia 自绘 · UI 一致性强但包大 |
| **React Native** | Meta · JS + 原生渲染 · 生态成熟但桥接性能瓶颈 |
| **Compose Multiplatform** | JetBrains · Kotlin + Skia 自绘 · 跟 Compose 同语法 |

## 2. 渲染路线对比

```
RN：           DSL → 虚拟 DOM → JS Bridge → Native View
                   3 棵树 + 2 次序列化

Flutter：      DSL → Widget → Element → RenderObject → Skia 自绘
                                                       自带画笔，跟系统原生有差异

Compose MP：   DSL → Composable Tree → Layout → Skia 自绘
                                              自带画笔（同上）

Kuikly：       DSL → BuildTree → RenderTree → 直接发指令到 Native View
                   2 棵树，无桥接，原生体验
```

## 3. 关键指标对比表

| 指标 | Kuikly | Flutter | RN | Compose MP |
|------|--------|---------|-----|-----------|
| 启动速度 | 快 | 中 | 中 | 中 |
| 滑动帧率 | 接近原生 | 接近原生 | 中（桥接瓶颈） | 接近原生 |
| 内存占用 | 低 | 中 | 中 | 中 |
| iOS 包体增量 | ~1.2MB | ~6MB | ~3MB | ~6MB |
| Android 包体增量 | ~300KB | ~4MB | ~2MB | ~4MB |
| 学习曲线（已会 Kotlin） | 低 | 高（学 Dart） | 高（学 JS） | 中 |
| 生态成熟度 | 新 | 高 | 非常高 | 中 |
| 招聘难度 | 较难（新框架） | 易 | 易 | 中 |

## 4. 选型决策树

```
你的团队主语言是什么？
├── Kotlin / Android
│   ├── 性能极致，包体敏感 → ★ Kuikly
│   ├── UI 想完全一致，无所谓包大 → Compose MP
│   └── 已有大量 Compose 代码想复用 → Compose MP
├── JavaScript / 前端
│   ├── 已有 React 项目 → RN
│   └── 全新项目 → 看团队意愿（学 Kotlin 选 Kuikly，留 JS 选 RN）
├── 不限语言，看效果
│   ├── 优先 UI 一致性 → Flutter
│   ├── 优先原生体验 → ★ Kuikly 或 RN
│   └── 必须支持鸿蒙 → ★ Kuikly（其他框架鸿蒙支持都不好）
```

## 5. 大厂用谁

| 公司 | 用什么 |
|-----|-------|
| 腾讯 QQ / 浏览器 / 音乐 | Kuikly |
| Google Pay / Stadia | Flutter |
| Meta / Facebook / Instagram | RN |
| 字节跳动 / 抖音 | Lynx（自家） + RN |
| 阿里 / 钉钉 | Weex / Flutter |
| 美团 | RN + Picasso（自家） |
| 京东 | Taro（小程序）+ RN |
| 携程 | Flutter + RN |

## 6. 一段话面试模板

> 「跨端框架可以分两类：**自绘派**（Flutter、Compose MP）和**原生派**（RN、Kuikly）。自绘派用统一渲染引擎画像素，跨端一致性强但包体大、跟系统原生有差异；原生派用各端原生控件，包体小、体验真原生，但需要解决跨端 UI 一致性问题。
>
> Kuikly 是腾讯开源的原生派代表，核心创新有三点：第一，基于 KMP 编译，业务代码用 Kotlin 写一份，编译出 6 个平台的原生产物；第二，两棵树架构（BuildTree + RenderTree），相比 Flutter/RN 的三棵树更轻量；第三，把测量布局放在 Kotlin 层（保证一致），把绘制留给 Native（保留体验），这是它'轻原生层'的设计精髓。」
