跨平台技术演进及Flutter未来

一、移动跨平台技术演进 
1. 引言移动互联网发展十余年 , 伴随着 Android、IOS 等智能手机的不断普及 , 移动端已逐步取代 PC 端 , 成为兵家必争之地 。正所谓“得移动端者得天下” , 移动端已成为互联网领域最大的流量分发入口 , 一大批互联网公司正是在这大趋势下崛起 。
 
2. 为什么需要跨平台技术伴随着移动互联网的高速发展 , 公司间竞争越来越激烈 , 如何将好想法快速落地、快速试错 , 成为备受关注的问题 。提升研发效率、缩短研发周期 , 保障产品快速试错并能快速迭代新功能 , 让新产品新功能以最快的速度同时抵达 Android、iOS 等多端用户 。
众所周知 , Android 应用采用 JAVA 或 Kotlin 编写 , iOS 应用采用 Objective-C 或 Swift 编写 , Web 端采用 html /css/JavaScript 编写 。当需要开发支持多端的应用 , 每一端都需要独立研发、测试 , 一直到上线 , 以及后续的维护工作 , 工作量成倍增涨 , 势必延长研发周期 。
为了解决多端独立开发的问题 , 跨平台技术便应运而生 , 各大互联网公司为此都投入大量人力 , 于是出现了各种跨平台技术框架 , 面对移动领域的跨平台技术方案的层出不穷 , 又该如何做技术选型呢?
 
3. 移动端技术选型作为移动端的跨端技术方案 , 所关注无外乎以下这4个方面:研发效率、动态性、多端一致性、性能体验 。

跨平台技术演进及Flutter未来

文章插图
  1. 研发效率:最大化代码复用 , 减少多端差异的适配工作量 , 降低开发成本 , 专注业务开发 , 实现“write once , run everywhere”的终极目标 。效率提升是贯穿整个业务的生命周期线 , 即便业务上线后 , 可持续降低后续的维护成本 , 加快新feature的迭代速度 , 这是一个持续的效率收益 。当然 , 这里不得不说 , 任何一门新技术在开发启动学习阶段会有一些成本 , 但上手后的收益是长期的 。
  2. 动态化:突破渠道的更新频率 , 可快速迭代新功能 , 这一点不仅是跨平台技术的诉求 , 也是Native技术必备的杀手锏 , 这也是评估跨端技术的一个重要考核点 。
  3. 多端一致性:好产品在多端UI设计上 , 往往是整体风格统一 , 所以业务方采用原生各自独立开发完成后 , 还需额外花不少时间来修改UI以保证多端一致性;可见 , 各端独立实现开发方式 , 带来的效率滞后 , 不仅仅是Android和iOS各开发一份代码的工作量 , 还有双端UI的一致性对齐的工作 。
  4. 性能体验:一般地 , 跨端技术方案拥有以上多重优势 , 但在性能方面比原生流畅更差些 。牺牲部分体验换来效率提升 , 这一点也是情理之中 , 试想一下 , 跨平台技术方案同时兼得这4点 , 那么原生技术恐怕已退出历史舞台 , 早已是跨平台技术的天下 , 所以往往跨平台技术的性能优劣便成为核心指标 。
 
4. 跨平台技术划分对研发效率和体验的不断追逐 , 移动端的跨平台技术方框架层出不穷 , 然则天下武功众多 , 万变不离其宗 , 从其核心本质来划分 , 可大致分为以下三大类:
跨平台技术演进及Flutter未来

文章插图
  1. Web技术:主要依赖于WebView的技术 , 功能支持受限 , 性能体验很差 , 比如PhoneGap、Cordova、小程序
  2. 原生渲染:使用JavaScript作为编程语言 , 通过中间层转化为原生控件来渲染UI界面 , 比如React Native、Weex 。
  3. 自渲染技术:自行实现一套渲染框架 , 可通过调用skia等方式完成自渲染 , 而不依赖于原生控件 , 比如Flutter、Unity 。
 
5. 跨平台技术演进跨平台技术 , 一直以来是每一个有追求的开发者所追逐的梦想 , 同时也是守旧者的噩梦 , 跨平台的多端一体化方案势必颠覆现有的原生各端独立开发模式 , 接下来列举众多的跨平台技术中最为关键的几个技术方案的演进阶段 。


推荐阅读