程序员

移动端跨平台之三国演义

2018-08-16  本文已影响0人  HowHardCanItBe

前言

移动端跨平台是眼下比较火的一个话题。各种相关技术方案也是层出不穷,从PWA, Phonegap, React Native, Weex,等等到新出现的Flutter,让人看得眼花缭乱。网上也有很多对这些跨平台方案的技术方面的全方位比较。但是由于这些解决方案还在不断快速发展。开发者难以据此做出选择投身于哪个平台。 而本文则希望从非技术角度来探讨移动端跨平台技术发展方向。让开发者能够有多一个维度的考量。扯上三国演义是因为我觉得情况有点类似,也是为了方便大家理解。好了,闲话少说 让我们进入正题。

“话说,东汉末年。。。”

过去和现在

从2007年第1代iPhone发布到现在,智能手机已经走过了11个年头了。智能手机市场也由Android和iOS两大系统主导。同时随着智能手机崛起的是App开发产业。各个移动互联网产品基本上会标配3个前端开发团队:Android,iOS和H5。同样的需求会在Android和iOS各开发一遍,有时候甚至需要H5也实现同样的功能。而App发布则需要提交各大市场,然后才能触达最终用户。开发时的重复投入和发布时的时效性差是移动端产品遇到的两大问题。

本来这两大问题是可以通过纯Web技术栈解决的。Web标准是大家都要遵守的,无论是Andriod手机还是iPhone,理论上讲h5页面在它们的内置浏览器上跑起来基本上不会有太大的差别。但是纯Web页面也有自己的问题,功能受限,很多智能手机的系统功能内置浏览器并不提供;性能受限,虽然智能手机性能在不断提升,但是短期之内,h5还是无法做到足以和原生匹敌的表现。PWA和Hybrid,希望能通过扩展Web技术栈来达到和原生类似的体验。React Native/Weex则另辟蹊径,上层使用Web技术,底层利用原生控件来做渲染。Google的Flutter更彻底,另起炉灶,连原生控件都不要了,都由自己来画。

为了实现跨平台这一终极目标,大家都在各自的技术路线上狂飙猛进。程序员们看得眼花缭乱,纷纷表示“学不动了”。确实,这些技术方案都有着各自的优点和缺点;都是看起来能解决所有问题,但是实际上却带来更多的问题。有人说,“没有银弹,我们需要取长补短”,然后你会看到集Native/Hybrid/React Native/Flutter等等于一身的“要你命3000”App。。。


要你命3000

但我觉的这种情况不应该持续太长时间,最终将会有一种技术方案胜出,毕竟一般人驾驭不了这样的大杀器。至于胜出的是谁,仅从技术角度讲,大家都是见仁见智。而在技术之外,起决定性作用的,我认为有三股重要的力量。那就是魏蜀吴。。啊不对,是Google,Apple和各大“纯”互联网厂商。

“天下大势,分久必合,合久必分。” by罗贯中

技术之外的力量

先来了解一下三方的情况。


三分天下

移动端跨平台的战场就是上面这三股力量的角力。有同学可能要问了,移动端跨平台不过是为了解决前面说的那些Native开发的问题而提出的技术方案,为什么搞的像要打仗一样?我要说的是这里面有更深层次的原因。不知道大家有没有听过一个缩写叫OTT(Over The Top)?OTT的具体定义简单一句话我解释不清楚,但是我举个OTT的例子大家就能明白其重大意义。移动,联通,电信等这些运营商,作为移动通讯的基础服务提供商在功能手机时代是非常赚钱的。当年1毛多钱1条的短信其实成本几乎为0。而到了智能手机时代,微信取代了短信和语音。运营商沦为流量管道。眼看着钱在自己的手中流动却分不到一杯羹,反而以前赚钱的业务也都被吞噬了,最可怕的是它们只能接受这样的结果却无法反抗。这就是OTT的威力!移动端跨平台就是这样的OTT,在Android和iOS的生态之上建立自己的跨平台生态,其颠覆性可以参考上面运营商的例子。这里我要提一下,其实微信已经建立了这样的一个小型OTT生态,那就是小程序。这也是我一直想不明白的一点,Apple怎么会同意微信搞小程序?是看不懂?看不上?还是两家达成了什么协议?有知道的同学可以说一说。

了解了移动端跨平台重要意义,那我们就可以推演一下将来可能出现的情形。首先的一种可能性是三家达成共识,支持其中的一种技术方案。这也是最好的一种情形,如果可能发生的话,那这个方案很大概率是基于Web技术栈的,毕竟Web已经是大家都遵守的标准,只是需要Google和Apple各自扩展自己的OS,提供更高性能的浏览器和开放更多的Native API并制定为标准,PWA貌似走的就是这条路,但其进展实在是过于缓慢,而且要制定成为标准还要三方一致才行,这种概率在我看来是极小的,毕竟协调三方的利益是很困难的。

剩下的选择就是三方博弈了。比较理性的做法是联合一家然后一起对付剩下的那一家。形成2v1的局面。也就是可能会出现以下三种组合中的一个:Google+Facebook vs Apple, Facebook+Apple vs Google和Apple+Google vs Facebook。我们来逐一分析下这三种情况出现的可能性:

Google+Facebook vs Apple

这个组合有个前提条件,那就是Google和Facebook首先得在内部达成共识:跨平台的方案是选Flutter还是选React Native。这个共识在我看来是难以达成的,更何况Apple还控制着iOS。所以这个组合可以排除了。

Facebook+Apple vs Google

Facebook主推React Native, Apple在iOS上给与系统级的支持。漏洞是Google掌握的Android生态。除非出现1+1>>2的情况,这个组合基本上也可以排除掉了。

Apple+Google vs Facebook

这个组合在我看来是最有可能出现的,Apple有iOS,Google有Android。跨平台方案有Flutter,只要两家移动OS生态强强联合,主推Flutter,使之成为移动端跨平台的事实标准,那么在将来即使出现OTT局面也会掌握在自己手里。避免重蹈运营商的覆辙。而对于一众“纯”互联网大厂来说,接受这样的标准也不会有太大的困难。

综合起来,在移动端跨平台的技术的演进方向上,似乎OS厂商联合主推自己的跨平台方案看起来更合理一些。但是合理的不一定会成为现实,有太多的变数。而开发者最希望的就是现在这种混乱的情况能尽快清晰起来。你搞你的React Native,我搞我的Flutter,Apple则仍然继续自己Native开发+App Store审核的模式,“你们只管折腾,开发出来的跨平台app能取代原生算我输。” 观望吧,怕自己会落后。赶紧跟上吧,可是跟哪个?AirBnb的教训还近在眼前。真的是脑壳疼。。。总之,作为移动开发者,只能从技术角度和非技术角度做出自己的判断了。我呢,只有一个建议,在做判断的过程中,尽量不要把个人对某个公司,某种技术,某种语言的好恶带进来。这很可能会误导你做出错误的决定。

"良禽择木而栖,贤臣择主而事。见机不早,悔之晚矣。" by李肃

后记

本文从非技术的角度对移动端跨平台技术的可能演进方向做了一点粗陋的分析,希望能对大家做技术选型,自身技术栈扩展方面提供一点参考。同时这也只是我个人的一些想法,大家如果有不同的见解,请大声说出来,我们一起探讨。

“谋事在人,成事在天。” by诸葛亮

上一篇下一篇

猜你喜欢

热点阅读