移动互联网发展到今天,早就过一个APP就能火爆火的时代,但好的产品却从不缺用户,比如:ChatGPT APP、微信、抖音、刚上架的灵光APP这些现象级应用。
但现在大家做创业类AI 相关的APP产品,除了会考虑APP业务、体验、基建和生态等等因素,最重要也会考虑降本增效和存量博弈。
最近有不少做技术管理者、以及一些创业的朋友问我,我们AI应用想做移动版APP,怎么选技术栈,
“用原生(Native),还是Flutter,还是RN,还是干脆套个壳用H5来包装个?”
这个问题没有标准答案,但可能有最优解。
今天我从移动开发的技术演进、成本算账、以及业务场景匹配这几个维度,我们来分析下把技术选型这笔账算清楚。
一,移动端技术演进: 从原生到跨平台
要选型技术,先得知道我们手里的牌是怎么来的,要知道自己产品的业务是什么样的,业务在APP上的表现是怎么样的,纯交互还是互动类,是否要依赖设备能力的,比如,视频类解码,比如地图定位,比如传感器。
这些先前的考虑,本质上就是既要又要的权衡,想要体验好(原生)和想要省钱快点上线(跨平台),同时还是要考虑业务发展,选错了技术栈,后续在建也是不小的支持。
比如,你应用属于重依赖设备的,比如地理位置与设备重交互,社交或视频类、依赖原生设备能力通道的,那也不要为了省去选择不成熟的技术栈,从而阻碍了业务发展。
那到底怎么选?我们看下APP技术的几个选项代表。
1. 原生开发: 依旧性能和体验王者
在iOS和Android刚起步时,没得选。你想做APP,就得招两波人:一波写Objective-C/Swift(iOS),一波写Java/Kotlin(Android),应用性能、体验都是最好的,而且可以根据自己平台的特性,使用系统封装的一些组件。
聊聊原生开发的现状:
原生的好处太多,唯一不好得地方就是需要2个团队来开发Android和iOS,但是其他地方完全可以碾压其他技术栈来做APP,参考微信,抖音这种,还有一些特定工具类还必现是原生,否则无法使用原生底层能力。
在AI时代下,开发和2个应用也已经不是太难的事情了,也有双栈的开发人员了。
如果要考虑到大体量或者对性能有极致要求的工具类APP、想体验好、高品质,这些必用原生开发。反之,纯原生开发可能成本一开始会高,如果你想试水而已,那可以先不用考虑原生方案。
2. PhoneGap/H5/Hybrid:取巧玩法,性能隐患
早期的PhoneGap(Cordova)想了个招:给APP做个原生的壳,里面塞个浏览器(WebView),大家写网页就行了。这样就解决了2端开发问题,只需要用webview和加载页面就可以了。但是,还是需要会原生的人来进行封装和对接。
看看这个现状: 这种技术来应用体验极差,滑动卡顿,交互僵硬,尽管现在有所优化,但是毕竟加载H5,及资源,到渲染还是需要时间的,这在移动端上是很难受的。除了极简单的内部管理软件,现在基本没人单纯用这个技术栈做商业级APP了。这种技术栈除了一些老的项目或者政府类有在用(你大概知道原因),公司类没有人在用这项技术了。
当然,一些广告页、APP里抽奖类等,运营类还是会嵌入个H5来做,适合频繁更改落地页,不考虑用户体验的页面还会用H5。Hybrid的方式也是很多混合开发APP里最成熟的方案。
如果是纯粹的H5 包装出来的APP,在开发新的APP上没有人用这项技术了。
3. 桥接派(React Native / Weex): 有提升、有担忧
Facebook推出了React Native(RN),可以理解为它不渲染网页,而是用JS去指挥原生的控件干活。这样的情况下,会多一层通信和桥接的方式。

- 现状: 体验比H5好太多,布局由 Yoga 快速计算,事件由原生线程分发和渲染,但因为中间隔着一层Bridge来通信,遇到复杂的动画或者长列表,性能还是会掉链子。新架构用 JSI/Fabric 大幅减少 JS 与原生的通信成本,但还不能完全达到原生,但是好太多了。
4. 自绘引擎(Flutter): 自绘制引擎,从根源解决
Google看不下去各种妥协,推出了Flutter。他最大的特点是引入了自绘制的引擎,这样不需要通信了,直接去绘制控件,但是他调用各端设备提供的能力还是需要通道的,但这个损耗很小。
但是,Flutter的开发需要一种新的开发语言Dart ,但性能会很很多了,尽管有时需要统一的2端进行支持。

它既不借用系统控件,也不用WebView,而是自己带了个渲染引擎(Skia),直接通过各端的GPU 进行绘制到屏幕上。目前看算是比较理想的跨平台技术选型。
但是他也有一些弊端,需要每端的开发人员在进行与原生交互的还是,还是要做一些通道工作的,而且UI的还原度还是不太完全与原生相比,包体积也会增大一些,在一些负责的页面上,比如:嵌入多个原生 Fragment / ViewController已经堆栈管理上,还是会跟麻烦,这样反而无形增加了很多工作量。
二,从技术和业务成本来对比下
为了让大家更直观地做决定,我整理了一个对比表格。这里不谈虚的,只谈钱、效率和结果。
| 维度 | 原生开发 (Native) | Flutter | React Native (桥接类) | Uni-app / H5混合 |
|---|---|---|---|---|
| 开发语言 | Swift / Kotlin | Dart | JavaScript / TypeScript | Vue / JS |
| 团队配置 | 高 (iOS+Android) | 中 (一套代码+会iOS/懂Android) | 中 (前端+原生) | 低 (前端) |
| 性能体验 | 极致 | 接近原生 | 良好 | 凑合用 |
| UI一致性 | 依赖平台实现 | 高 | 一般 (依赖原生组件) | 一般 |
| 包体积 | 小 | 中 (带引擎) | 中 | 小 |
| 热更新 | 难需审核) | 难 (Shorebird方案) | 易 (CodePush) | 易 |
我的一些看法:
- 如果追求性能,业务发展也需要,追求品质,不差钱,选原生。
- 如果业务影响不大,节省成本,可以部分引用flutter,可能还需要Android和iOS懂点的人辅助开发。
- Uni-app 这类在国内是个特殊的存在,如果只是国内,比如政府类接的简单项目、事业单位小APP, 可以选择该类平台,或者一锤子买卖的项目,可以选用,否则不要选。
三, 给一些决策参考
我们进一步展开来看下,其实技术栈没有好坏,只有适不适合。早期有团队硬推RN、Flutter其实很多为了所谓创新和KPI,也有很多团队发现用了这些反而成本在增加,因为一些负责的页面,在不成熟使用这些技术,反而是个黑洞。
早期比较出名的airbnb、以及闲鱼APP都是很好的例子,折腾了半天很多也放弃跨平台,重合原生阵营。
比较原生的技术和平台底层在发展,而真正的跨平台只是相对的,如果是长期使用的APP不要选择跨平台也是一个不错的选择。
但如果给些参考的还是可以的:
1. 判断使用Flutter的情况
预算有限,但对UI设计还原度要求高。设计师给了一套非常炫酷的UI,希望在iOS和Android上看起来一模一样。团队里有一些会基本的 Android和iOS的人,但也不是很精通,希望通过flutter快速实现一些简单页面,缩短研发周期。
团队人员方面,有学习开发语言的动力Dart开发
产品的业务界面简单,只做展示类,与手机硬件交互能力少。
产品属于前期验证(接受后期推到重建原生), 项目周期短,也有懂Android和iOS人。
希望APP有一定的逼格,同时要具备好的性能和界面。
符合以上情况的,建议可以选择Flutter。
2. 判断使用React Native的情况
如果已经有了APP,基于这个APP在做维护和迭代的情况,可能是基于原生开发的,想在里面嵌入一些动态更新的模块(但现在很多都走应用市场更新了)这个确实现在不太重要,除非是金融类,交易类等必须减少损失。
考虑到动态化更新的场景比较重要的情况
团队人员方面都是从web前端人员比较多,Android和iOS的人员很少或者没有。
不考虑APP的包大小,以及性能加载速度可在业务的接触范围内。
项目已经是比较稳定的,处于稳定迭代或者小的更新阶段可以考虑
同样APP业务简单,与设备交互和性能影响可以容忍,比如只展示类和填写类APP。
3. 用Uni-app这类的情况
主打国内老板要求的这种业务,既要又要,但不关心体验,只关心乱七八糟上线有就行,还有有微信小程序、抖音小程序也要有,Android和iOS都要。
核心是我知道APP烂,但我要的是覆盖,花最少的前,撑最多场面的这种应用。
一锤子交付,维护在说,先有个APP东西的。
到时搞不定技术和产品的,能搞定人的业务。
这种不要考虑太多,直接用这类来做技术栈,后期在搞在说后期的事情,主动一个不顾效率和常见,只要现在交付的,不要犹豫,就用这个。
4. 原生判断的情况
但凡,对APP有点追求和品质,特别在AI时代下,要快和体验,又能快速跟上各平台新的API生态的,必选Android和iOS来开发。
以及有些场景必须要明确知道的,否则选错,不用原生后边的代价可能会非常大。
- 跟硬件设备相关的,蓝牙锁、智能家居控制、音视频编解码、AR/VR应用这类业务。(用跨平台技术会坑死)
- 工具类、交易类、金融类APP,重安全和业务的,不要想直接用原生。
- 超级APP,这些之前讲过,抖音,微信,淘宝,不止原生,底层网络,通信都会用Rust/C++重做的,不要想底座肯定选原生。
- 基于原生系统来交互做的APP的业务,比如壁纸类、通知类、社交类,通信类等等,需要原生能力,不用考虑直接原生。
四, 专门聊聊小程序
很多人会纠结:“现在小程序这么火,我还有必要开发APP吗?”
“小程序已经把APP取代了,这种情况是说明对移动上的应用和使用场景还是不够清楚。”
个人认为,小程序是轻量级的应用,一个比较好的比喻,通过小程序我们快速上车体验,但真正到达目业务目的还是要靠APP做私域,一个是路,一个是家的概念。
具体还是要结合自己的产品业务属性,是适合在路上,还是需要把用户请到家里。
小程序在国内是一个流量的捕获器,优点是获客成本低,即用即走的很好场景,但也很难发展其他留存动作。最重要,功能受限,比如不能长时间后台运行,不能做太复杂的操作。
小程序一定要结合业务来判断技术选型,是否需要完整掌控用户体系、推送触达和深度交互,收集数据和路径迭代产品,如果是MVP验证和小产品项目,只是网络请求或者显示,查一查,那可以考虑小程序。
五,最后我们总结下
作为老板,创业者或技术决策者,我们在做移动端APP上技术选型时,需要从成本、时间、技术、后期维护等综合来考虑,希望以上思考可以提供帮助。
从商业本质,技术的价值在于解决问题,成就业务。
如果你的目标是极致体验、性能、行业壁垒和标杆,业务属性要求,选原生绝对没错。
如果你的目标是活下去,先试试看,考虑Flutter/RN混合,团队也要有原生人支持。
如果是外包类和小项目,只关心交付,不考虑使用和维护,Uni-app这类代表可以考虑。
希望这篇文章能帮你在这个存量竞争的时代,少走弯路,把钱和精力花在刀刃上。
版权声明
本文作者:良技漫谈
本文链接:https://www.ljmt.online/blog/how-to-choose-app-dev/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

