移动开发跨平台之争:HTML5只是看上去很美?插图
HTML5的“跨平台优势”一说由来已久。我们之前曾报道Facebook工程师的改版手记,其中提到他们对HTML5跨平台快速迭代的推崇。然而前不久扎克伯格却公开发声“押注HTML5是大错”。关于它的实用性,或许使用者自己才更有发言权。
  以下是Cocos2D-X核心开发者王哲在cocoaChina移动开发者大会上的演讲。他认为本地应用的好处在于可以将资源打包运行,缺点是iOS审核及Android碎片化;HTML5看似跨平台,实则碎片化较Android更严重。各有优缺点的情况下,较理想的方式是Hybrid(混合模式),当然它也并非天衣无缝,还存在苹果方面的条款风险。而一定只鼓吹“某一种模式必胜”的,背后更多是利益相关,目前开发者只能尽己所能,将来如何需要看整个生态的发展。
  (有趣的是,王哲曾是“新概念作文大赛”的冠军,前一届的冠军里出了韩寒,后一届的冠军里出了郭敬明,而他则被调侃为“误入程序员”。)
移动开发跨平台之争:HTML5只是看上去很美?插图(1)
全文如下,略整理删改:
  最近在讨论的是,用哪一种方式能把跨平台的游戏做得更具一致性,体验更好。目前有三不同的基础,Native(本地应用)、HTML5、Hybrid(二者结合模式),一般的框架只会选择其中之一。我们在开发过程中有一些心得可以跟大家分享一下。
  Native,我们能够确定他们用的技术方案。在升级的时候不需要把整个游戏重新下载,它是一个增量升级的概念,就是说它可以把脚本和资源打成一个包,下载完以后直接在本地运行。以目前的情况,困难在于Android的碎片化,自更新需要花很多的力量;而在苹果上,游戏发布后每次更新就必须等待漫长的审核周期。所以我们对Native的感情是很复杂的,这些年靠最靠谱的方式给大家带来了收益,但是它又有这样那样的缺点。
  HTML5是来补救Native的缺点的。HTML5是在浏览器里面跨平台的做,自己就比较省事儿了。目前争论的比较多,到底移动互联网是Native还是HTML5。HTML5信徒说未来HTML5必然要取代Native,实际上这些争吵的背后代表了不同的利益集团。Native主要是手机平台商,就是做操作系统方面的,HTML5的阵营主要是做浏览器,还有做搜索,比如说FaceBook这样的厂商。站在开发者的角度上往前看谁有能力,实际上最后还是共生共存的状态。公正的看这件事情,还是要客观的看数据。
移动开发跨平台之争:HTML5只是看上去很美?插图(2)
把HTML5放在不同操作系统浏览器上跑,得分都不一样,实际上很少人说这背后有什么样的意义。我认为它背后的意义是HTML5已经开始碎片化。这件事情是不可避免的。因为Android和iOS代表了对这个生态圈完全不同的两种态度。Android比较自由没有太多的约束,大家都可以搞,结果就出现了不同的定制、不同的操作系统、不同的商城。而苹果的方式是很严格的控制,有点儿像独裁者,你的游戏是否能上去完全看他的心情。
  HTML5比Android更开放更自由,这是它的优点,但是优点和缺点是相生的,也就是说你现在面对的不像Android一样是同一个系统不同的版本兼容性的问题,而是这个浏览器有这个标签,有这个功能,另外一个浏览器没有。所以给不同的浏览器做适配的问题在HTML5上面只会更严重,不会更容易。所以HTML5试图想让自己很轻易的跨平台,实际上自己又变成了分化的很多的平台,所以我认为这是HTML5社区的第一个问题。
  第二个问题,是它的性能。我们的游戏实验下来的结果,超过几百个元素在动的时候,还达不到要求的标准。所以HTML5有它的优点,也有它的缺点,未来有可能更好,也有可能更糟糕,但是这个事情不是我们能够决定的。所以,目前能做的是在现有的框架、现有的标准基础做到最好,但最后整个生态圈走多远还是看HTML5发展的情况。
  Native和HTML5各有缺点,所以第三种方式是Hybrid。国内有一些厂商会采用这种技术方案。有的游戏使用Native,结果是每次升级需要下载几十兆的包,还存在审核周期长,需要发布多渠道维护的情况。Hybrid怎么做呢?发到所有渠道里面,然后游戏第一次启动的时候,到服务器上下载游戏的脚本和资源,大概80MB左右,后面的升级每次开游戏的时候自动监测一下,有没有升级包,有的话就下载下来,解压完以后脚本和图片资源替换掉,这样就完全避免了Native目前碎片化的问题。对于HTML5来讲,它运行效率非常高、非常流畅。
  除了解决前面这些问题之外,它还会带来一个额外的收益就是开发时间。目前Native版本开发人员成本高,开发周期特别长,用Hybrid之后,用脚本化的编程都能够大大的加快游戏开发的速度,它还是处于一种运行速度和开发速度折中的方案。
移动开发跨平台之争:HTML5只是看上去很美?插图(3)
举一个例子对比一下。同样一个专门用于测试性能的游戏,在iPhone 4S Safari用HTML5,可以看到画面并不是太复杂,属于很简单的情况;如果把同样的代码放到Hybrid的方案里,就显得很轻松,但是游戏的代码还是那些,没有变。
  Hybrid不是天衣无缝,它有一个致命的缺点在于,如果用Hybrid升级包方式使游戏升级的话是违反苹果的开发者条款的,因为苹果禁止下载可运行的脚本,但是这个事情很多人在偷偷干,所以不太清楚最后这个政策上的风险会怎么样,这是Hybrid方式唯一美中不足的地方。