
我把我 2 年前的一篇博客文章进行了一次"重写",于是有了这篇。
原文的选题很实用,结构也很清晰:按布局、网络请求、图片加载三个维度,把 iOS、Android、Flutter 常见框架放在一起横向看。
帮助移动端开发洞察各端核心框架的流行趋势,提供洞察和选项参考。
但原文的数据,放到 2026 年 6 月再看,已经有点过期了。
比如 Jetpack Compose 已经不是"新趋势",而是 Android 新项目的默认答案;SwiftUI 也不再只是 UIKit 的补充;Flutter 生态里真正常用的网络和图片方案,也比前几年稳定得多。
所以这次我保留原文的主题和章节结构,但把里面的数据全部换成截至 2026 年 6 月 5 日 仍能核对的版本。这里的"流行",主要参考三类信号:
- 官方文档里的当前主推方向
- GitHub star、最近更新时间、最新 release
- pub.dev 里的包版本与社区热度
先说结论:
- iOS :新项目默认先看 SwiftUI,网络层常见组合仍然是
URLSession + Alamofire,图片层 Kingfisher 和 SDWebImage 依旧稳。 - Android :Jetpack Compose 已经坐稳第一主角,但网络层依旧是
OkHttp + Retrofit的天下,图片层则明显向 Coil 倾斜。 - Flutter :真正重要的不是"再找一个 UI 框架",而是围绕 Flutter 自己的 Widget 体系,补齐
Dio、cached_network_image、响应式适配这些工程层能力。
背景
很多人做移动端技术选型时,脑子里其实有两个问题。
第一个问题是:这个平台现在官方到底在推什么?
第二个问题是:团队真实会用什么?
这两个问题,经常不是一回事。
官方可能在推声明式 UI,团队却还背着一堆历史页面;官方说原生能力已经够了,业务项目却还是离不开成熟的第三方封装。
所以这篇文章不想做"唯一正确答案"的神话,而是想把三个平台的真实生态拆开来看。
自动布局 / UI 框架
如果你只想先抓住这一节的核心判断,可以先看下面这张图。

这张图对应后文最重要的一个判断:iOS 和 Android 的主线,都是从旧的命令式 UI 走向声明式 UI;Flutter 则从一开始就站在自己的统一 Widget 体系上。
iOS
先说结论:2026 年的新 iOS 项目,首选已经是 SwiftUI;但只要你接的是存量项目,UIKit 依然不会消失。
Apple 在最新的 SwiftUI 文档里,继续把 SwiftUI 放在最前面推进,新设计、富文本编辑、3D SwiftUI 视图、与 RealityKit 的融合,都是围绕 SwiftUI 展开的。这已经不是"能不能用"的问题,而是"你还要不要继续用 UIKit 当第一语言"的问题。
但现实也很直白。大量公司项目并不会在一年内把 UIKit 全量迁走,尤其是复杂列表、深度定制导航、历史组件库很重的团队,UIKit 仍然是维护成本最低的选择。
| 框架 / 方案 | 类型 | 2026 年状态 | 最新数据 |
|---|---|---|---|
| SwiftUI | Apple 官方声明式 UI | 新项目首选 | Apple 官方持续更新,最新"SwiftUI 新特性"文档仍以它为核心 |
| UIKit | Apple 官方命令式 UI | 存量项目主力 | 仍是大量老项目和复杂页面的基础设施 |
| SnapKit | Auto Layout DSL | Swift 项目里最常见的约束封装 | 6.0.0,20.3k stars,最近 release:2026-05-31 |
| Masonry | Auto Layout DSL | Objective-C 老项目仍常见 | v1.1.0,18.2k stars,最近活跃明显放缓 |
如果你问我一句最实在的话:
SwiftUI 已经赢了方向,UIKit 还在赢存量。
Android
Android 这边的判断,比 iOS 还更明确一点:Jetpack Compose 已经从"推荐尝试"变成"默认正解"。
Android Developers 的官方文档和博客都把 Compose 放在正中间来讲。Compose BOM 页面给出的稳定版本快照是 2026.02.01;而 2025 年 12 月的官方发布说明里,Google 甚至明确提到内部滚动基准测试已经做到"Compose 的滚动性能与 Views 持平"。
这句话很关键。
因为过去很多团队不敢全面拥抱 Compose,不是因为语法不喜欢,而是担心性能和工程稳定性。现在这个顾虑已经没以前那么大了。
| 框架 / 方案 | 类型 | 2026 年状态 | 最新数据 |
|---|---|---|---|
| Jetpack Compose | Google 官方声明式 UI | 新项目首选 | Compose BOM 2026.02.01,官方持续作为主推方案 |
| Views + XML | Android 传统 UI | 存量项目主力 | 老页面、老组件库、混合迁移项目仍非常多 |
| ConstraintLayout | 传统布局系统 | 仍常用,但更偏维护 | 在传统 View 体系里仍是基础能力 |
| FlexboxLayout | 辅助布局库 | 还有使用场景,但不是新主角 | 3.0.0,18.3k stars |
Android 这几年的真实变化,不是 View 突然死了,而是 Compose 终于从"未来"变成了"现在"。
Flutter
Flutter 这边反而最容易被误解。
很多人问"Flutter 上最流行的 UI 框架是什么",这个问法本身就有点偏。因为 Flutter 自己就是 UI 框架。
你并不需要像 iOS 那样在 SwiftUI 和 UIKit 之间选,也不需要像 Android 那样在 Compose 和 XML 之间切换。Flutter 的核心就是它自己的 Widget 树、渲染管线和跨平台 UI 系统。
真正需要补的是"响应式适配"和"大屏布局能力"。
| 框架 / 方案 | 类型 | 2026 年状态 | 最新数据 |
|---|---|---|---|
| Flutter SDK / Widget 体系 | Flutter 官方 UI 框架 | 绝对核心 | 官方 release notes 当前稳定大版本为 3.44.0,文档页最近更新于 2026-05-15 |
| Material / Cupertino Widgets | Flutter 内置组件体系 | 日常主力 | 仍然是跨平台开发的基础组件层 |
| responsive_framework | 响应式适配辅助库 | 大屏 / Web / 平板适配常见 | 1.5.1,pub.dev 3.3k likes,GitHub 1.4k stars |
所以在 Flutter 里,真正的判断不是"再选一个 UI 框架",而是:
你要不要接受 Flutter 这套一体化 UI 体系,并为它补足工程化外围。
网络请求框架
网络层如果只看库名,很容易觉得这部分没什么新东西。
但真正值得看的是它们在工程里的分层关系。你会发现三端虽然名字不同,思路其实非常接近:都有"底层能力 + 工程抽象 + 业务接口"的结构。

先把这个层级关系记住,再看后面的表格和结论,会更容易理解为什么有的库长期不变,有的库更像工程补强。
iOS
iOS 网络层这些年其实没发生剧烈翻盘。
原生的 URLSession 一直都能打,但到了真实业务里,大家还是会希望有更好用的请求封装、拦截器、上传下载、统一错误处理和更清晰的 API 抽象。
所以主流答案还是那几个熟面孔。
| 框架 / 方案 | 类型 | 2026 年状态 | 最新数据 |
|---|---|---|---|
| URLSession | Apple 官方网络 API | 原生基础设施 | 官方长期稳定 |
| Alamofire | Swift 网络请求库 | 最主流第三方方案 | 5.12.0,42.4k stars,最近 release:2026-05-05 |
| Moya | 基于 Alamofire 的抽象层 | 中大型项目仍常见 | 15.0.3,15.4k stars |
如果项目比较轻,URLSession 足够。
如果项目进入多人协作、接口多、鉴权复杂、需要统一拦截和日志,Alamofire 还是那个最稳的名字。至于 Moya,它更像是团队在"工程规范"上的选择,而不是简单的功能补丁。
Android
Android 网络层的格局,几乎没什么悬念。
OkHttp 是地基,Retrofit 是门面。
这对组合能活这么久,不是因为大家懒得换,而是它真的把 Android 网络层最难踩坑的地方都踩过了:连接复用、拦截器、缓存、序列化、接口声明式定义、协程适配,全都非常成熟。
| 框架 / 方案 | 类型 | 2026 年状态 | 最新数据 |
|---|---|---|---|
| OkHttp | HTTP 客户端 | Android 网络层基础设施 | 官方站点 changelog 已到 5.3.2,47.0k stars |
| Retrofit | API 声明式封装 | 业务项目事实标准 | 3.0.0,43.9k stars,最近 release:2025-05-15 |
| Ktor Client | Kotlin 多平台客户端 | 有增长,但仍非 Android 主流默认项 | 更常见于 Kotlin Multiplatform 语境 |
很多团队表面上在讨论"要不要 Retrofit",真正讨论的其实是:你准备把网络协议层做多工程化。
只要答案是"要",Retrofit 依然很难被绕开。
Flutter
Flutter 的网络层比原生平台更集中。
原因很简单:Dart 生态不像 iOS 和 Android 那样背着十几年原生历史包袱,所以真正跑出来的候选库并不多。
| 框架 / 方案 | 类型 | 2026 年状态 | 最新数据 |
|---|---|---|---|
package:http |
Dart 官方基础 HTTP 包 | 轻量项目常用 | 1.6.0,pub.dev 8.4k likes |
| Dio | 高级 HTTP 客户端 | Flutter 社区最常见主力 | 5.9.2,pub.dev 8.3k likes,GitHub 12.8k stars |
这块我建议非常直接:
- 简单项目、脚本、小工具:
package:http - 复杂业务、文件上传、拦截器、统一错误处理:
Dio
别纠结太久。Flutter 网络层真正的默认答案,已经很明显了。
图片加载框架
iOS
iOS 图片加载生态现在的分工也很清楚了。
老牌、稳、兼容性强,选 SDWebImage;纯 Swift、接入舒服,选 Kingfisher;如果你追求现代 API 和更细致的 pipeline 控制,Nuke 很值得看。
| 框架 / 方案 | 类型 | 2026 年状态 | 最新数据 |
|---|---|---|---|
| Kingfisher | Swift 图片下载与缓存 | Swift 项目非常主流 | 8.9.0,24.3k stars,最近 release:2026-05-05 |
| SDWebImage | 老牌图片加载库 | 兼容性和历史覆盖率极强 | 5.21.7,25.7k stars,最近 release:2026-02-26 |
| Nuke | 现代 Swift 图片 pipeline | 增长很稳 | 13.0.6,8.6k stars,最近 release:2026-05-07 |
如果你是从零开始的新 Swift 项目,我会更偏向 Kingfisher 或 Nuke。
如果你在接老项目,尤其还有 Objective-C 历史,那 SDWebImage 依然是非常现实的选择。
Android
Android 这边的趋势更明显一点:新项目,尤其是 Compose 项目,越来越偏向 Coil。
Glide 当然还是非常大,历史装机量也很夸张。但 Coil 和 Kotlin、协程、Compose 的贴合度更高,这让它在新项目里有天然优势。
| 框架 / 方案 | 类型 | 2026 年状态 | 最新数据 |
|---|---|---|---|
| Coil | Kotlin-first 图片加载库 | 新项目越来越常见 | 3.4.0,11.8k stars,最近 release:2026-02-24 |
| Glide | 老牌高性能图片库 | 存量项目非常多 | 5.0.7,35.0k stars,最近 release:2026-04-19 |
| Picasso | 经典图片库 | 仍有历史项目,但新项目热度下降 | 2.8,18.8k stars |
一句话总结:
Glide 赢历史,Coil 赢未来。
Flutter
Flutter 图片加载生态,核心仍然围绕缓存、占位图、失败态、缩放浏览这些体验问题。
cached_network_image 这些年一直很稳,因为它解决的是最普遍的问题:网络图缓存。extended_image 则更像是"功能加强版",尤其适合需要裁剪、缩放、手势操作、图片编辑能力的场景。
| 框架 / 方案 | 类型 | 2026 年状态 | 最新数据 |
|---|---|---|---|
| cached_network_image | 网络图片缓存 | 最常见默认方案 | 3.4.1,pub.dev 6.9k likes,2.47M downloads |
| extended_image | 图片增强组件 | 复杂交互场景常用 | 10.0.1,pub.dev 2.0k likes,GitHub 2.1k stars |
如果只是普通资讯流、电商列表、头像封面这类场景,cached_network_image 几乎已经够用了。
只有当你真的需要图片编辑、手势缩放、拖拽关闭、更多控制能力时,再把 extended_image 拉进来。
总结
如果把三个平台放在一起看,我的判断是这样的。
1. 布局层的主旋律已经很清楚
- iOS:SwiftUI 是方向,UIKit 是存量
- Android:Compose 是方向,也是新项目现实
- Flutter:Flutter 自己就是框架,不存在再选一套 UI 主体的问题
2. 网络层反而没那么"新"
真正稳定的网络栈,往往寿命都很长。
Alamofire、OkHttp + Retrofit、Dio 这些名字之所以一直在,不是因为没有新人,而是因为它们已经足够工程化、足够稳定、足够被团队理解。
3. 图片层最能看出生态风格
- iOS 更像"多强者并存"
- Android 更像"Coil 上升、Glide 守城"
- Flutter 更像"一个默认项加一个增强项"
2026 年,如果你现在要开新项目
如果你现在真的要做选型,我会给一个很不政治正确、但很实用的建议。
如果你更喜欢"先按项目场景看路线,再回头看具体框架",那这张图会更直观。

图里的意思其实很简单:先选场景,再选技术路线。 纯 iOS、纯 Android、跨平台、老项目改造,这四种问题从一开始就不是同一道题。
- 纯 iOS 新项目 :优先 SwiftUI;网络层
URLSession或Alamofire;图片层Kingfisher或Nuke - 纯 Android 新项目 :直接 Jetpack Compose;网络层
OkHttp + Retrofit;图片层优先Coil - 一套代码覆盖 iOS + Android :优先评估 Flutter;网络层
Dio;图片层cached_network_image - 老项目改造:别为了"追新"全量重写,优先做局部迁移和边界清理
说白了,技术选型最怕的不是框架不够新,而是团队选了一个自己根本养不起的栈。
新框架最吸引人的地方,是 demo 很漂亮。
老框架最值钱的地方,是它真的陪你扛过线上事故。
这两个维度,别混了。
参考资料
- Apple SwiftUI 文档:SwiftUI new features
- Apple 开发者更新页:New for Apple developers
- Android Developers:Use a Bill of Materials - Jetpack Compose
- Android Developers Blog:Jetpack Compose December 2025 release highlights
- Flutter 官方文档:Flutter release notes
- OkHttp 官方 changelog:Change Log - OkHttp
- pub.dev:
dio、http、cached_network_image、extended_image、responsive_framework - GitHub 仓库:
SnapKit、Masonry、Alamofire、Moya、Kingfisher、SDWebImage、Nuke、flexbox-layout、Retrofit、OkHttp、Coil、Glide
注:GitHub star、release、最近活跃时间均按 2026-06-05 抓取;"流行"代表社区可见热度与工程常见度的近似值,不等于真实装机量或公司内部使用占比。