Add new BMW and VW asset images to tech-selection

- Added bmw1.png, bmw2.png, bmw3.png, bmw4.png, bmw5.png to tech-selection/assets
- Added vw1.png, vw2.png, vw3.png, vw4.png, vw5.png to tech-selection/assets
This commit is contained in:
Guangfei.Zhao
2026-08-26 11:09:51 +08:00
parent 334032aa4e
commit ee4146b121
11 changed files with 204 additions and 24 deletions
@@ -23,7 +23,7 @@
**第二,这个项目的原生能力密度非常高。** 扫码、VIN 识别、车牌识别、相机、相册、上传进度、定位、权限、弱网离线暂存、崩溃上报、埋点——这些不是画页面,是跟两个操作系统打交道。**这部分工作量不会因为换框架而减少一件。**
**第三,生态不在一个量级,而且开放程度的差别在"开到哪一层"。** Flutter 主仓库 **91,171 次提交**uni-app 主仓库 **11,216 次**,约 8 倍差距;fork 数 31,002 对 3,709,同样约 8 倍。更关键的是:Flutter 从渲染引擎到框架层全部 BSD 开源;uni-app x 的组件和 API 虽然也是 Apache-2.0 开源,**但真正决定 App 能力上限的 Runtime、SDK 和 HBuilderX 是 DCloud 自有知识产权,闭源,没有公开的提交历史。**
**第三,生态不在一个量级,而且开放程度的差别在"开到哪一层"。** Flutter 主仓库 **91,171 次提交**uni-app 主仓库 **11,216 次**,约 8 倍差距;fork 数 31,002 对 3,709,同样约 8 倍。更关键的是:Flutter 从渲染引擎到框架层全部 BSD 开源;uni-app x 的组件和 API 虽然也是 Apache-2.0 开源,**但真正决定 App 能力上限的 Runtime、SDK 和 HBuilderX 是 DCloud 自有知识产权,闭源,没有公开的提交历史。** 落地面同样如此——**字节跳动 90 多款、阿里闲鱼、腾讯、贝壳、美团、京东、携程,公开可查的大厂主力 App 案例集中在 Flutter 一侧;整车厂里 BMW 的 My BMW App 与大众安徽的 ID. UNYX 也是同一条路线,uni-app x 未检索到同等量级的先例**(逐条证据与分档见 [4.3 节](#43-谁在用可查证的落地规模))。
**第四,构建链路和扩展能力受限,而"离线打包"这条退路并不是真正的退路。** 想用加密的付费插件,就只能云端打包;想做 Siri 快捷指令这类扩展,官方要求离线打包——**这两个要求互斥。** 更关键的是:离线打包给到的并不是一个可以随便改的原生工程,而是**围着 DCloud 闭源二进制(一组编译好的 AAR)搭起来的壳**,官方文档要求自定义 `Application` 必须继承 `DCloudApplication`,且写明「App离线SDK不支持Kotlin」。**你只能在壳外面加东西,改不了壳里面的东西。**
@@ -40,6 +40,7 @@
| 原生能力开发 | Pigeon 生成三端强类型代码,支持 CLI | 原生插件(已停止新增上架) | UTS 插件,**只能经 HBuilderX,不支持 CLI** |
| 开源程度 | 引擎 + 框架全开源(BSD) | 框架层开源(Apache-2.0 | 框架层开源,**Runtime / SDK 闭源** |
| 主仓库提交数 | **91,171** | **11,216** | 同左(含在 uni-app 仓库分支) |
| 大厂主力 App 落地 | 字节 90+ 款、闲鱼、美团、京东、贝壳、携程、BMW、大众安徽 ID. UNYX | — | **未检索到同等量级公开案例** |
| 原生工程归谁 | **自己的工程**Flutter 挂进去 | DCloud 的壳工程 | **DCloud 的壳工程**,核心是闭源 AAR |
| App 扩展能力 | 标准原生开发,无额外规则 | 受限 | **小组件需 Xcode 做 .appexSiri 需离线打包** |
| 接入现有 GitLab 流水线 | 原生支持 | — | 结构性错配 |
@@ -59,23 +60,48 @@
先把台面上的选项摆全,再谈取舍:
| 方案 | 出品方 | 语言 | 首次发布 | 现状 |
| --- | --- | --- | --- | --- |
| **原生双端** | Google / Apple | Kotlin · Swift | — | 平台官方方案,能力无上限 |
| **Flutter** | Google | Dart | 20171.0 于 2018 年底) | 跨端主流方案,生态最大 |
| **React Native** | Meta | JavaScript / TypeScript | 2015 | 成熟,适合已有 React 团队 |
| **uni-app** | DCloud | Vue + JS | 2018 | 国内多端方案,小程序场景占优 |
| **uni-app x** | DCloud | UTS + UVue | 2023 | uni-app 的原生渲染重构版 |
| **Taro** | 京东 | React / Vue | 2018 | 重心在多家小程序平台 |
| **Kotlin Multiplatform** | JetBrains | Kotlin | 2020 | 逻辑层共享强,UI 层生态尚浅 |
| **.NET MAUI** | Microsoft | C# | 2022 | 微软栈企业适用,国内生态薄 |
| **原生 + H5 混合** | | 任意 | — | 老牌做法,性能与体验受限 |
| 方案 | 出品方 | 语言 | 首次发布 | 架构路线 | 现状 |
| --- | --- | --- | --- | --- | --- |
| **原生双端** | Google / Apple | Kotlin · Swift | — | ① 原生 | 平台官方方案,能力无上限 |
| **Flutter** | Google | Dart | 20171.0 于 2018 年底) | ④ 自绘引擎 | 跨端主流方案,生态最大 |
| **React Native** | Meta | JavaScript / TypeScript | 2015 | ③ 编译到系统控件 | 成熟,适合已有 React 团队 |
| **uni-app** | DCloud | Vue + JS | 2018 | ② 网页套壳 | 国内多端方案,小程序场景占优 |
| **uni-app x** | DCloud | UTS + UVue | 2023 | ③ 编译到系统控件 | uni-app 的原生渲染重构版 |
| **Kuikly** | 腾讯 | KotlinKMP | 2025 年 4 月开源 | ③ 编译到系统控件 | 腾讯内部大规模落地,对外生态尚新 |
| **Taro** | 京东 | React / Vue | 2018 | ② 网页套壳 | 重心在多家小程序平台 |
| **Kotlin Multiplatform** | JetBrains | Kotlin | 20202023 年底转 Stable) | 只共享逻辑层 | 逻辑层共享强,UI 层生态尚浅 |
| **.NET MAUI** | Microsoft | C# | 2022 | ③ 编译到系统控件 | 微软栈企业适用,国内生态薄 |
| **Apache Cordova** | Apache(前身 Adobe PhoneGap | JavaScript | 2011PhoneGap 2009 | ② 网页套壳 | 第 ② 条路线的鼻祖,仍维护但重心在兼容性 |
| **Ionic Capacitor** | Ionic | JavaScript | 2019 | ② 网页套壳 | Cordova 的现代继任者,Ionic 官方主推方向 |
市面上主要的跨端方案。前五个是本次讨论真正需要展开的。
市面上主要的技术栈选项。「架构路线」一列对应下一节归纳的四条路线——**十一个选项,路线只有四条。**
**其余几个为什么不在本次展开,理由逐条写明**,避免"没提到"被读成"没考虑过"
| 方案 | 不展开的理由 |
| --- | --- |
| **React Native** | 与 uni-app x 同属第 ③ 条路线,本文对该路线的分析同样适用;且选它的最大理由——复用既有 React 人力——在本项目不成立 |
| **Taro** | 重心是多家小程序平台,而本项目正在关停小程序 |
| **Kotlin Multiplatform** | 只共享逻辑层,UI 仍要两端各写一遍;若配 Compose Multiplatform 补 UI,整体成熟度与生态仍明显落后于 Flutter |
| **.NET MAUI** | 国内生态与可招聘人力都太薄 |
| **Cordova / Capacitor** | 与 uni-app 同属第 ② 条路线且更"裸"。Adobe 的 PhoneGap 已于 2020-10-01 停服;Apache Cordova 仍在维护(2026 年仍有 `cordova-android@15.0.0``cordova-ios@8.1.0` 等发版),但工作重心是跟进新版 Android / iOS 的兼容性而非能力演进,`cordova-osx``cordova-windows` 已停止维护 |
| **Kuikly** | 见下——它是这批里最新、也最值得单独回答的一个 |
**关于 Kuikly:这是一个技术上认真的方案,不应轻视。**
腾讯于 2025 年 4 月开源,基于 Kotlin Multiplatform,走第 ③ 条路线(原生 UI 渲染),支持 Android / iOS / 鸿蒙 / Web / 小程序 / macOS 六端。**它在腾讯自己内部的落地规模很实在**:官方 README 写明已用于 QQ、QQ 音乐、QQ 浏览器、腾讯新闻、搜狗输入法、应用宝、全民 K 歌、酷狗音乐、酷我音乐、自选股、ima.copilot、微视等产品,内部 20+ 应用深度使用、1000+ 页面、覆盖 5 亿+ 日活。
不选它的三条理由,没有一条是"它不好":
1. **对外开源只有一年多。** 仓库建于 2025-04-24,截至 2026-08-25 共 853 次提交、3,413 star、300 fork。腾讯体系外的生产案例、第三方组件、招聘市场、AI 语料都还没起来。
2. **它的 License 不是标准开源协议。** 条款主体接近 MIT,但加了一条限制:**未经腾讯书面同意,不得为"增加或启用动态代码下发 / 热更新能力"而修改、扩展或制作衍生作品。** 这对本项目不构成实际障碍(我们不做热更新),但它意味着这个项目在治理上不等同于 BSD / Apache 那种无附加条件的开源。
3. **它是给 Kotlin 团队用的。** 本项目原生侧确实要写 Kotlin,但把整个 App 的 UI 层也搬到 Kotlin / KMP,与我方的人力结构和既有技术积累不匹配。
**一句话:Kuikly 值得三年后重新评估,但不适合作为一个 2026 年就要开工、要跑五年的项目的底座。** 至于"腾讯自己都做了 Kuikly,是不是说明 Flutter 不行"——这个问题在 [4.3.3 节](#433-腾讯这一行要单独解释它既用-flutter也做了-kuikly)正面回答。
### 1.2 归纳:其实只有四条架构路线
上面个方案,剥掉品牌和语言的差异,底层只有四条路线。**理解了这四条,就能理解为什么不同方案的能力上限不一样:**
上面十一个方案,剥掉品牌和语言的差异,底层只有四条路线。**理解了这四条,就能理解为什么不同方案的能力上限不一样:**
```
① 原生双端(Native
@@ -83,12 +109,12 @@
iOS 工程师 ──写一遍──▶ Swift ──▶ 苹果系统的按钮 / 列表 / 输入框
→ 两套代码、两套人,但系统给什么就能用什么,没有天花板
② 网页套壳(uni-app、原生 + H5 混合
一套 Vue 代码 ──▶ JavaScript ──▶ 系统自带的浏览器组件 ──▶ 渲染成网页
② 网页套壳(uni-app、Cordova / Capacitor、Taro
一套 Vue / React 代码 ──▶ JavaScript ──▶ 系统自带的浏览器组件 ──▶ 渲染成网页
→ 一套代码,但用户看到的本质上是个网页;
要用系统能力,得靠"插件"从网页世界打一个洞出去
③ 编译到系统控件(uni-app x、React Native
③ 编译到系统控件(uni-app x、React Native、Kuikly、.NET MAUI
一套代码 ──编译──▶ Kotlin ──▶ 安卓系统的原生控件
──编译──▶ Swift ──▶ 苹果系统的原生控件
→ 一套代码,用户看到的是真正的原生控件。
@@ -100,6 +126,8 @@
→ 一套代码,不用系统的任何控件,两端画出来完全一样
```
Kotlin Multiplatform 是唯一不完全落在这四条里的:它只共享业务逻辑,UI 层仍需各端各写;若配上 Compose Multiplatform 补 UI,则归入第 ④ 条。)
用装修打比方:
- **① 原生双端**:请两个装修队分别装两套房子。质量最好,花两份钱,而且两边多半装得不太一样。
@@ -366,21 +394,158 @@ GitHub 实测数据,核验于 2026-08-25,取自 `flutter/flutter` 与 `dclou
### 4.3 谁在用:可查证的落地规模
提交数说明的是"投入",落地案例说明的是"验证"。这里只列**厂商官方渠道公开发布、可点开核对**的,不引用二手传闻。
提交数说明的是"投入",落地案例说明的是"验证"。这一节回答一个很实际的问题:**同等体量、同样要做一个正经 App 的团队,实际上选了什么。**
**字节跳动是目前公开信息中规模最大的 Flutter 使用方**(数据来自 Flutter 官方中文站的开发者故事,2026-06-22 更新):
**先把证据分档,不混着用:**
| 档次 | 是什么 | 可信度 |
| --- | --- | --- |
| **甲** | 框架方官方发布的案例页或官方仓库 / 文档 | 最高,可点开核对 |
| **乙** | 使用方自己公开发布的材料——技术团队实践文章,或官网依法披露的第三方 SDK 清单 | 高,但要看发表年份 |
| **丙** | 第三方对应用商店安装包的 SDK 扫描统计 | **只能证明"包里有",不能证明"整个 App 都是它写的"** |
证据分档。以下每一条都标注了档次和年份,**丙档只用来看趋势,不用来下结论。**
#### 4.3.1 中国主流 App 的实际选择
| 使用方 | 涉及的 App / 业务 | 跨端技术栈 | 证据 |
| --- | --- | --- | --- |
| **字节跳动** | **90 多款**应用:抖音火山版、飞书 Lark、Coze、掘金、Lemon8、小荷健康、幸福里等 | **Flutter** | **甲** — Flutter 官方中文站开发者故事,2026-06-22 更新 |
| **阿里巴巴** | **闲鱼**(已推进到线上主链路) | **Flutter** | **甲** — Flutter 官方 Showcase;闲鱼团队并开源了 FlutterBoost、Fish Redux 等基建 |
| **腾讯** | 官方页表述为"多个团队将应用完整迁移到 Flutter" | **Flutter** | **甲** — Flutter 官方 Showcase「腾讯」页:调试效率 +80%、90% 代码多端复用、开发工作量 −33% |
| **腾讯**(另一条产品线) | QQ、QQ 音乐、QQ 浏览器、腾讯新闻、搜狗输入法、应用宝、全民 K 歌、酷狗、酷我、自选股、ima.copilot、微视 | **Kuikly**(自研,KMP | **甲** — 官方 README:内部 20+ 应用深度使用、1000+ 页面、覆盖 5 亿+ 日活 |
| **贝壳找房** | 主业务多平台 | **Flutter** | **甲** — Flutter 官方 Showcase2021-03 |
| **大众汽车(安徽)** | **ID. UNYX App**:购车定制、车联车控、社区、商城 | **Flutter** | **乙(第一方合规披露)** — 大众安徽官网《第三方个人信息共享清单》列明 Flutter SDK,使用情形写作「App 所有的 L1、L2、L3 页面开发语言」 |
| **美团** | 外卖**商家端** App | **Flutter**(自建 MTFlutter 生态) | **乙** — 美团技术团队官方博客:Flutter 覆盖商家端 **90% 以上业务**,团队 **90% 以上成员**具备 Flutter 开发能力(2021-03 |
| **携程** | 主 App:火车票、酒店等十多个核心业务的列表页与主流程 | **原生 + React Native + Flutter 混合** | **乙** — 携程技术《携程 APP Native/RN 内嵌 Flutter UI 混合开发实践和探索》(2021-10)、《Flutter 在携程复杂业务的高性能之旅》(2022-04) |
| **京东** | **JDFlutter**:2017 年起调研,物流 App 验证,后由技术中台建容器 / 工具链 / 组件平台 | **Flutter** | **乙** — 京东 EMOP 官方文档《JDFlutter 白皮书》、京东云开发者社区 |
| **百度** | 百度贴吧 | **Flutter** | **乙,但年份较早** — GMTC 2019 深圳站百度工程师公开分享。**未检索到 2024 年之后的官方更新,这一条只作历史参考** |
国内主流 App 的跨端技术栈。凡是检索不到近年官方更新的,都已就地标注。
**这张表能读出三件事:**
**① 主流选择高度集中在 Flutter。** 阿里、字节、美团、京东、贝壳、携程、大众安徽——公开材料指向同一个方案,腾讯也有官方案例在列(它同时另有一条 Kuikly 自研线,见 4.3.3)。React Native 在携程这类 2015–2018 年就大规模投入的团队里仍是重要存量,但**新增投入基本都流向 Flutter**(这一点在 4.3.5 的第三方统计里能再次看到)。
**② 落地形态几乎都是"原生为主 + Flutter 承载业务模块",不是整个 App 用跨端框架重写。** 携程写的标题就是"Native/RN 内嵌 Flutter UI";闲鱼是先用 FlutterBoost 做混合栈再逐步推进主链路;京东是从物流 App 起步再建中台;美团覆盖到 90% 的是**商家端**,不是 C 端主 App。
> **这个形态和本项目的规划完全一致。** 我们本来就要写十几个原生插件、要嵌 F6 的网页——Flutter 负责业务页面和统一体验,系统能力仍走原生。**换句话说,本项目的架构不是一个需要自己趟的新形态,而是这批团队已经趟了五六年的成熟形态。**
**③ 没有一家把 uni-app 系用在自己的主力 App 上。** 这一条要说得公平:**这不是 uni-app 的缺陷,是定位不同。** uni-app 的主战场是中小企业、政企项目和以小程序为主的多端场景,那里它的落地量非常大,也确实解决问题。但本项目的参照系是"做一个独立的、原生能力密集的主力 App"——在这个参照系里,可查证的大规模先例都在 Flutter 一侧。
#### 4.3.2 单独看一类:整车厂的 App
把 BMW 和 ID. UNYX 拎出来单独讲,理由是技术上的:**这一类 App 的能力构成,是"原生能力密集"这件事的极端形态。** 远程车控、实时车况回传、车辆查找与远程摄像头、充电桩与地图——全部要落到系统 API 和车联网长连接上,且对时延和可靠性有硬要求;与此同时,它们还要在多个品牌、多个市场上维持同一套体验。**第 ④ 条路线(自绘引擎)能不能扛住"重原生 + 多变体 + 长周期"这个组合,这两个案例是目前能查到的最直接的回答。**
##### BMWMy BMW App(甲档,Flutter 官方 Showcase 收录)
BMW 的起点和很多团队一样:iOS 与 Android 各有一套 BMW Connected / MINI Connected**两端的功能和设计逐渐分叉,到 2018 年已经大到必须收敛。** 选型时团队评估了多个跨端框架,为了用户体验**明确排除了基于浏览器的方案**(即第 ② 条路线),最终选定 Flutter。
| 节点 | 事实 |
| --- | --- |
| 2018 年 | 确认双端分叉问题,启动跨端方案评估 |
| 2019 年 10 月 | 慕尼黑工程会议敲定方案 |
| **2020 年 7 月** | **My BMW App 上线——从定案到发布不到一年** |
| 覆盖范围 | **47 个国家、五大洲**iOS + Android 双端合一,同时服务 BMW 与 MINI 两个品牌 |
| 工程化 | 内部 **Mobile 2.0 Platform**,每天出多个构建,**每个构建自动生成、测试并部署 96 个变体** |
| 2021 年 10 月 | **每个 App 变体已累计构建超过 10,000 个版本** |
| 团队结构 | 按域拆分:一个团队做车辆连接与通信抽象层,若干团队做共享应用平台,更多团队做面向客户的功能与实验特性 |
BMW 在 Flutter 官方 Showcase 页公布的时间线与工程数据。
![My BMW App 车况首页](assets/bmw1.png)
My BMW App 的车辆首页:车况总览、剩余电量与续航、锁车 / 解锁 / 灯光 / 鸣笛的快捷车控,以及车辆查找与远程摄像头入口。
![My BMW App 使用场景](assets/bmw2.png)
车内使用场景。这类 App 的主干功能建立在定位、推送与车联网长连接之上,是典型的原生能力密集型应用。
> **这个案例真正的价值不在"BMW 也用 Flutter",而在那个 96。** 一个构建自动产出 96 个变体、每个变体累计上万次构建,说明 Flutter 的产物在 CI 里是可批量、可自动化、可长期滚动的——**这正是第 5 章要谈的构建链路问题**。对照 uni-app x 的云端打包(每次计费、加密插件强制走云端、自定义基座需重制),这种量级的自动化在那条路线上很难成立。
原文引述 BMW 集团 Offboard Platform 副总裁 Dr. Nicolai Kraemer 的表述:新的应用平台建立在三根支柱之上——**易用性、安全性与可靠性**(英文原文 "user friendliness, safety and reliability")。对一个要跑五年的企业级 App,这三个词恰好就是选型时该问的三个问题。
##### 大众汽车(安徽):ID. UNYX App(乙档,第一方合规披露)
这一条的证据类型和上面不同,**但可信度不低**:大众安徽官网的《第三方个人信息共享清单》里列有 **Flutter SDKGoogle LLC**,使用情形一栏直接写作**「App 所有的 L1、L2、L3 页面开发语言」**——L1 / L2 / L3 是该 App 自己的页面层级口径,即一级、二级、三级页面,合起来就是全部主干界面。**这是依据个人信息保护法规必须如实披露的材料,不是市场稿**,属于使用方在法定披露文件里自陈的技术栈。
ID. UNYX App 的功能面覆盖得相当宽,五张官方商店截图覆盖了它的主要板块:
![ID. UNYX — 官方资讯](assets/vw1.png)
资讯与转化:品牌 / 车型资讯流(精选 · 车型 · 去玩 · 资讯),页内嵌预约试驾、定制与下单、购车权益等入口。
![ID. UNYX — 互动社区](assets/vw2.png)
社区:UGC 内容流,分最新 / 关注两条线,右侧为话题聚合。
![ID. UNYX — 在线定购](assets/vw3.png)
车型与配置:与众 06 / 07 / 08 / 09 切换,展示续航、加速等参数,底部为预约试驾与定制下单。
![ID. UNYX — 车联车控](assets/vw4.png)
车控:车辆状态(续航、电量、停泊状态)、车锁 / 车窗 / 后备箱 / 鸣笛 / 闪灯的快捷车控、温度调节与附近充电站。**这一页是纯原生能力密集页,且对实时性有要求。**
![ID. UNYX — 精品商城](assets/vw5.png)
商城:商品分类、Banner 轮播、新品推荐列表——标准的电商页面结构。
> **需要如实补一句:同一站点的另一份 SDK 说明里还列有 React Native SDK。** 也就是说 ID. UNYX 同样是混合形态,并非 100% Flutter。**这一点不削弱结论,反而印证了 4.3.1 的第 ② 点**——真实世界里的大型 App 几乎都是混合的,问题从来不是"能不能只用一个框架写完",而是"主干页面交给谁"。**在这个案例里,主干页面交给了 Flutter。**
##### 这两个案例回答了本项目的三个疑问
1. **重原生能力是不是 Flutter 的禁区?** —— 不是。远程车控、实时车况回传、车联网长连接的原生密度高于本项目的扫码 / 车牌 OCR / 定位 / 推送,而且可靠性要求是安全级的。
2. **多变体、长周期的工程化扛不扛得住?** —— BMW 每个构建自动出 96 个变体、每个变体累计上万次构建,已经给出了上限参考。
3. **是不是必须整个 App 重写成 Flutter** —— 不是。这两个案例都是"原生 / 混合底座 + Flutter 承载主干页面",与本项目规划的形态一致。
#### 4.3.3 腾讯这一行要单独解释:它既用 Flutter,也做了 Kuikly
上表里腾讯出现了两次。这是评审会上很可能被追问的一点,先讲清楚:
- **腾讯是超大体量公司,几十条产品线各自做技术选型,本来就不会只有一个答案。** Flutter 官方 Showcase 收录了腾讯案例,同时 QQ 系走自研的 Kuikly——**两件事同时为真,不矛盾。**
- **Kuikly 解决的核心问题是动态化。** 它的 License 里唯一那条附加限制,就是禁止为"增加或启用动态代码下发能力"制作衍生作品——**这从反面说明了动态下发是这个框架最要害的能力。** 对 QQ、QQ 音乐这类月更、要灰度、要快速止血的消费级 App,热更新是刚需。
- **而本项目的发版链路已经定了**:安卓走托管 OTA 分发页,iOS 走 TestFlight + App Store,都是正规链路;企业侧的安全评审通常也不倾向接受"可以绕开商店直接下发代码"这种能力(同[附录 C](#补充一条对方的真实优势热更新)对热更新的判断)。**驱动腾讯自研 Kuikly 的那个核心动机,在本项目并不存在。**
**所以"腾讯自己不全用 Flutter"不能反推成"Flutter 不行"。** 它反推出的是另一件事:**当一家公司的需求足够特殊,它会自己造轮子——而这条路只有腾讯这个体量的团队走得起。** 我们不是那个体量,本项目也没有那个特殊需求。
#### 4.3.4 字节跳动:目前公开信息中规模最大的单一使用方
数据来自 Flutter 官方中文站的开发者故事,2026-06-22 更新:
- **90 多款 Flutter 应用**在线上运行
- **800 多名 Flutter 开发者**,并设有专职的 Flutter Infra 基建团队
- 点名的产品包括:抖音火山版、飞书 Lark、Coze、小荷健康、幸福里、Lemon8,以及技术社区 **掘金**
原文对收益的表述:**「与原生双端开发相比,Flutter 为我们的团队节省了大约 1/3 的开发时间」**。
原文对收益的表述,出自字节跳动 Flutter 基础设施团队负责人董岩:**「与原生双端开发相比,Flutter 为我们的团队节省了大约 1/3 的开发时间」**。
> **这个 1/3 必须标清口径:它的对照组是"原生双端",不是 uni-app。** 拿它去论证"Flutter 比 uni-app x 省 1/3"是错的,我们不这么用。本文档的成本结论仍然是第 6.1 节那句——**首版两条路线基本持平**。这里引用它只说明一件事:一个有能力自研全套基建的团队,在做过 90 多个 App 之后仍然选择继续投入 Flutter。
顺带一提:**这份评估里引用的技术社区"掘金",它自己的 App 就是 Flutter 写的。**
**uni-app x 侧,我们未检索到同等量级的公开大厂落地案例。** 这里写"未检索到"而不是"没有"——DCloud 官方公布的是 uni-app 全系的开发者与应用总量,那个数字很大,但它统计的主体是小程序和 H5,无法单独拆出"用 uni-app x 做的独立 App"有多少、规模多大。**口径不可比的数字我们不拿来对比。**
#### 4.3.5 第三方统计:只看趋势,不下结论
移动分析平台 Appfigures 通过扫描应用安装包内的 SDK 特征做过框架分布统计。**这是丙档数据**——只能证明"这个包里检出了某框架",不能证明整个 App 都由它写成(按 4.3.1 的第 ② 点,大厂 App 恰恰大多是混合的)。两组数字:
| 口径 | 数据 | 时间 |
| --- | --- | --- |
| 新上架应用中检出该框架的比例 | **Flutter 约 11.07%**、React Native 约 6.75%2022 年分别为 10.15% / 4.73% | 2024 年 110 月 |
| 非游戏类 iOS 应用 Top 10,000 中的检出数 | React Native **1,350** 个、Flutter **1,184** 个;框架相关下载量占比 RN 47%、Flutter 38% | 2025-12 |
Appfigures 的两组框架分布数据。
**这两组数字方向相反,但并不矛盾,反而说明了问题的实质:**
- **存量看 React Native。** 它 2015 年就开源,比 Flutter 1.02018 年底)早三年多;Top 10,000 这种榜单本身就偏向存量大厂应用。
- **增量看 Flutter。** 新上架应用里 Flutter 的检出比例接近 RN 的 1.6 倍,且 2022 → 2024 两年间差距还在扩大。
**这正好印证 4.3.1 的观察**——用 React Native 的大多是历史投入,新的投入在往 Flutter 走。同一份统计里还有一条:**Cordova 与 Ionic 呈持续下降趋势**,这是第 ② 条路线(网页套壳)在国际市场的整体走向。
**必须补一句口径说明,否则这组数据会被误用:uni-app 系不在这类统计的框架清单里。** 原因不是它不重要,而是它的主体落地在国内小程序和 H5,不通过 App Store / Google Play 分发,这套方法论本来就扫不到。**口径不可比的数字我们不拿来对比,也不拿它去论证任何结论。**
#### 4.3.6 uni-app x 侧:未检索到同等量级的公开案例
**我们未检索到 uni-app x 在大厂主力 App 上的公开落地案例。** 这里写"未检索到"而不是"没有"——DCloud 官方公布的是 uni-app 全系的开发者与应用总量,那个数字很大,但它统计的主体是小程序和 H5,无法单独拆出"用 uni-app x 做的独立 App"有多少、规模多大。**口径不可比的数字我们不拿来对比。**
### 4.4 AI 工具链:开放生态 vs 厂商内置
@@ -413,7 +578,7 @@ GitHub 实测数据,核验于 2026-08-25,取自 `flutter/flutter` 与 `dclou
1. **遇到问题能不能自己解决** —— 引擎开源你能读能修,闭源你只能等工单。
2. **五年后还有没有人维护** —— 8 倍的提交量差距 + 三代方案换代史,指向两种不同的平台连续性。
3. **有没有人趟过同样规模的路** —— 90 多款线上应用、800 多名开发者的实践,意味着我们会遇到的坑大概率已经有人踩过并写下来了。
3. **有没有人趟过同样规模的路** —— 字节的 90 多款线上应用、闲鱼的主链路、美团商家端的 90% 覆盖、携程的原生 + Flutter 混合栈、京东的 JDFlutter 中台、BMW 每个构建 96 个变体的自动化产线、ID. UNYX 用 Flutter 承担全部主干页面,意味着我们会遇到的坑大概率已经有人踩过并写下来了。**尤其是"原生为主 + Flutter 承载业务模块"这个形态——那正是本项目要走的路。**
4. **AI 辅助的效率** —— 直接落在代码量最大的那两块工作上。
---
@@ -670,7 +835,7 @@ UI 实现 20-25% ↓ 略省 ← 它的优势只作用在这一块
## 附录 A 数据与事实来源
本文档中所有关于 uni-app / uni-app x 的技术判断,**除单独标注者外,均来自 DCloud 官方文档或对应厂商官方文档**;社区数据取自 GitHub 公开接口。全文只有一处引用社区来源(5.4 节的安卓小组件交付清单),已在正文和下表中明确标注。便于客户方自行复核。核验日期:**2026-08-25**。
本文档中所有关于 uni-app / uni-app x 的技术判断,**除单独标注者外,均来自 DCloud 官方文档或对应厂商官方文档**;社区数据取自 GitHub 公开接口。**非厂商官方来源全文共三处,均已在正文就地标注**:5.4 节的安卓小组件交付清单(社区实战教程)、4.3.1 表中百度贴吧一行(2019 年会议公开分享)、4.3.5 节的框架分布统计(第三方分析平台 Appfigures,已标为"丙档,只看趋势不下结论")。便于客户方自行复核。核验日期:**2026-08-25**。
| 结论 | 来源 |
| --- | --- |
@@ -693,8 +858,20 @@ UI 实现 20-25% ↓ 略省 ← 它的优势只作用在这一块
| Flutter 官方 agent skills 与 MCP server | [Flutter — Agent skills](https://docs.flutter.dev/ai/agent-skills)、[Dart and Flutter MCP server](https://docs.flutter.dev/ai/mcp-server) |
| Flutter Skills 发布公告(2026-05-06 | [Introducing Skills for Dart and Flutter](https://flutter.dev/blog/introducing-skills-for-dart-and-flutter) |
| DCloud 官方的 uni-app x 与 Flutter 对比(包体 18M / 8.5M、内存约 138MB / 103MB、仅覆盖 VDOM 模式、"需求墙尚有未完成项"等自陈边界) | [uni-app x — 跨平台技术选型](https://doc.dcloud.net.cn/uni-app-x/select.html) |
| 字节跳动 90+ 款 Flutter 应用、800+ Flutter 开发者、产品清单与"节省约 1/3 开发时间"(口径为对比原生双端) | [Flutter 中文文档 — 开发者故事 / 案例](https://docs.flutter.cn/resources/case-studies)2026-06-22 更新) |
| 字节跳动 90+ 款 Flutter 应用、800+ Flutter 开发者、产品清单与"节省约 1/3 开发时间"(口径为对比原生双端,出自字节 Flutter 基础设施团队负责人董岩 | [Flutter 中文字节跳动的多平台绽放秘诀 / 开发者故事](https://docs.flutter.cn/posts/flutter-bytedance-dev-story/)2026-06-22 更新) |
| 阿里巴巴 / 闲鱼、腾讯(调试效率 +80%、90% 代码多端复用、开发工作量 −33%)、贝壳找房的 Flutter 案例 | [Flutter Showcase](https://flutter.dev/showcase)、[阿里巴巴集团](https://flutter.dev/showcase/alibaba-group)、[腾讯](https://flutter.dev/showcase/tencent)、[贝壳找房](https://flutter.cn/showcase/beike)2021-03 |
| 美团外卖商家端 Flutter 覆盖 90% 以上业务、90% 以上成员具备 Flutter 能力(MTFlutter | [美团技术团队 — FlutterWeb 在美团外卖的实践](https://tech.meituan.com/2021/03/18/FlutterWeb-in-meituanwaimai.html)、[Flutter 专题页](https://tech.meituan.com/tags/flutter.html) |
| BMW:2018 年确认双端分叉、排除浏览器方案、2019-10 慕尼黑定案、2020-07 My BMW App 上线、覆盖 47 国五大洲、Mobile 2.0 Platform 每个构建自动产出并部署 96 个变体、截至 2021-10 每个变体累计构建超 10,000 个版本、Dr. Nicolai KraemerBMW 集团 Offboard Platform 副总裁)关于三根支柱的表述 | [Flutter Showcase — BMW](https://flutter.cn/showcase/bmw/)(英文原页:[flutter.dev/showcase/bmw](https://flutter.dev/showcase/bmw) |
| 大众汽车(安徽)ID. UNYX App 以 Flutter 承担「App 所有的 L1、L2、L3 页面」;同一站点另一份 SDK 说明中另列有 React Native SDK | [大众安徽 — 第三方个人信息共享清单](https://www.id.unyx.com/subp-YH20240626002)、[大众安徽 — 第三方 SDK 权限说明](https://www.id.unyx.com/subp-YH20240626003)、[App Store — ID. UNYX](https://apps.apple.com/cn/app/id-unyx/id6471565172) |
| 4.3.2 节配图 | BMW 两张为 My BMW App 官方宣传图;ID. UNYX 五张取自其 App Store 商店页官方截图。**配图只用于说明这两个 App 的功能面,不作为技术栈证据**——技术栈依据见上两行 |
| 携程主 App 为原生 + React Native + Flutter 混合,Flutter 用于火车票 / 酒店等核心业务列表页与主流程 | 携程技术《携程 APP Native/RN 内嵌 Flutter UI 混合开发实践和探索》(2021-10)、《Flutter 在携程复杂业务的高性能之旅》(2022-04),收录于[携程技术年度合辑](https://docs.c-ctrip.com/files/6/ctriptech/1gw291200099iy5uyCC5B.pdf) |
| 京东 JDFlutter2017 年起调研、物流 App 验证、技术中台建容器与工具链 | [京东 EMOP — JDFlutter 白皮书](https://opendoc.jd.com/base/emop/SPD/JDFlutter/1.white-paper.html)、[京东云开发者社区 — 京东技术中台 Flutter 实践之路](https://developer.jdcloud.com/article/1234) |
| 百度贴吧 Flutter 落地 **(2019 年会议公开分享,非官方文档,时效性已在正文标注)** | GMTC 全球大前端技术大会 2019 深圳站,百度高飞《Flutter 在百度贴吧的落地实践》 |
| 腾讯 Kuikly:基于 KMP、原生 UI 渲染、支持六端;内部 20+ 应用、1000+ 页面、5 亿+ 日活;产品清单;License 禁止为动态代码下发目的制作衍生作品;仓库建于 2025-04-24853 次提交 / 3,413 star / 300 fork | [Tencent-TDS/KuiklyUI(中文 README](https://github.com/Tencent-TDS/KuiklyUI/blob/main/README-zh_CN.md)、[LICENSE](https://github.com/Tencent-TDS/KuiklyUI/blob/main/LICENSE)、GitHub REST API |
| 安卓桌面小组件在 uni-app x 下的交付清单:3 个 Kotlin 文件 + Manifest 注册 + 3 个 XML 布局 + UTS 桥接;「每次修改这些文件后必须重新制作自定义基座」;需用 `getIdentifier()` 取资源 ID **(社区来源,非官方文档)** | 掘金社区 UTS 插件桌面小组件实战教程,2026-05-31 |
| 框架分布统计:2024 年 1–10 月新上架应用 Flutter 约 11.07% / RN 约 6.75%2022 年 10.15% / 4.73%);Top 10,000 非游戏 iOS 应用中 RN 1,350 个 / Flutter 1,184 个;Cordova 与 Ionic 下降 **(第三方分析平台,方法为扫描包内 SDK 特征,正文已标为丙档)** | [Appfigures — Non-Native Development Trends](https://appfigures.com/resources/insights/20241025)、[React Native's New Rival](https://appfigures.com/resources/insights/20251219) |
| Adobe PhoneGap 与 PhoneGap Build 于 2020-10-01 停服;Apache Cordova 仍在维护,2026 年仍有 `cordova-android@15.0.0``cordova-ios@8.1.0` 发版,`cordova-osx` / `cordova-windows` 已停止维护 | [Apache Cordova — Goodbye PhoneGap](https://cordova.apache.org/announcements/2020/08/14/goodbye-phonegap.html)、[Cordova Blog](https://cordova.apache.org/blog/)、[ASF 董事会纪要 — Cordova](https://whimsy.apache.org/board/minutes/Cordova.html) |
| Ionic Capacitor 1.0 发布于 2019-05-22,为 Cordova / PhoneGap 的现代替代 | [Ionic — Announcing Capacitor 1.0](https://ionic.io/blog/announcing-capacitor-1-0) |
| Google 明确不在 Flutter 主线支持鸿蒙(Closed as not planned);鸿蒙适配由 OpenHarmony-SIG 社区分支承接,2026-01 成立 Flutter SIG3.41 鸿蒙版已发布、3.44 鸿蒙版预计 2026-09 | [flutter/flutter issue #150536](https://github.com/flutter/flutter/issues/150536)、[OpenHarmony-SIG / flutter_flutter](https://gitcode.com/openharmony-sig/flutter_flutter) |
外部来源清单。凡本文档中标注为"推论"的内容(如"F6 需要改造页面"、"加密插件与离线打包互斥"),均由上表中的事实推出,推理过程已在正文中写明。
@@ -716,6 +893,9 @@ UI 实现 20-25% ↓ 略省 ← 它的优势只作用在这一块
| **UVue** | uni-app x 的页面写法,基于 Vue |
| **nvue / 5+** | DCloud 上两代的 App 方案,官方维护已于 2024 年停止 |
| **Weex** | 阿里开源的跨端方案,nvue 的渲染引擎基础,已于 2021 年从 Apache 退役 |
| **Kuikly** | 腾讯 2025 年 4 月开源的跨端框架,用 Kotlin 写,渲染成系统原生控件 |
| **Cordova / Capacitor** | 最早的一批"网页套壳"方案,把一个网页包装成 App。Capacitor 是 Cordova 的现代继任者 |
| **KMPKotlin Multiplatform** | JetBrains 的方案,只把业务逻辑做成一份共用,界面仍要两端各写各的 |
| **Dart** | Flutter 的编程语言 |
| **Pigeon** | Flutter 官方工具。写一份接口定义,自动生成三种语言的对接代码,避免手写出错 |
| **HBuilderX** | DCloud 出品的开发工具(IDE),uni-app 系的插件开发目前离不开它 |
Binary file not shown.

After

Width:  |  Height:  |  Size: 976 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 946 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB