var
来源:景安IDC资讯作者:server发布时间:2015-05-25点击:2084
跨平台开发的说法由来已久,但却从未像今天这样被各大厂商所重视。Google、Facebook、英特尔、微软相继推出重大举措,支持和推动App开发商开发兼容Android、iOS、Windows Phone等平台的应用。而面对语言众多、平台众多、终端适配和开发成本高昂等问题时,App开发商自身也迫切希望能具备跨平台开发的能力,以期达到降低开发成本、缩短开发周期、增多商业收益的目的。跨平台开发时代已经来临,你做好准备了吗?
流行的跨平台开发工具
在过去的一年,业内涌现出了一大批优秀的跨平台开发工具,大致上主要分为三类:Web应用、Native应用、混合应用。
自适应网页设计(也称“响应式网页设计”,如图1所示),是一种时下比较流行的网页设计技术,也算是一种在线Web应用。该设计使得网页可根据访问设备的特点以不同的风格样式进行展现。也就是说,可以让一个网站在手机上打开后,展现得像个本地应用一样,只要用户在手机浏览器上输入网址就可以使用该“应用”的功能。这节省了开发App的成本,也不必为了在各个应用商店上更新发布App而烦恼——只要网站更新了,用户的“App”就会随之更新。时下比较流行的此类框架有:Bootstrap、Pure、Foundation、Ink、Skeleton、ChocolateChip-UI等。
PhoneGap是一个推出时间相对较早的开源免费的跨平台移动App开发框架,一直以来都受到大量开发者的喜爱,从iOS、Android、Windows Phone到Amazon、Firefox OS等各大小主流移动平台一应俱全,而且也能使用地理位置、加速器、联系人等智能手机常见的核心功能。PhoneGap框架主要使用的还是基本的Web开发技术(HTML、JavaScript、CSS),所以它在各平台上具有优越的兼容性,熟悉网页开发的开发者能低成本地快速开发跨平台应用。应用的性能在经过分别优化后也大多可以接受。
Hybrid(混合)模式应用开发,其实质上就是一种中间件机制的应用程序框架,有人形容它是“Native搭台,HTML5唱戏”,近来受到了大量开发团队的追捧,成为一种主流开发模式。Titanium、AppCan、ionicFramework等都是其中的佼佼者,尤其AppCan作为国产货,因为有较强的本地化文档和技术支持,被大量国内开发者关注。Web前端开发工程师几乎可以零成本介入,快速做出漂亮的UI并满足大部分跨平台需求。无论是在什么系统下,混合应用可以实现几乎完全相同的交互体验。
Xamarin,虽然我们可以通过组织多个团队或雇用全栈程序员的方式,针对各个平台使用原生语言和开发工具分别开发出同一应用的Native版本,实现跨平台,但这个做法显然成本过高,而且应用程序生命周期也很难控制。Xamarin则可以通过一种编程语言搞定所有平台的Native App开发,这个语言就是C#。时下依然有很多人把C#语言跟.NET做等同认知,认为C#只能编写.NET应用程序,而且只能在微软的平台上跑,这是一种非常错误的观点。C#是一种优秀的计算机编程语言,支持.NET、Mono,但也可以编写非托管应用,甚至是操作系统。Xamarin是开源项目Mono的商业化运作公司,它的跨平台开发工具名也叫Xamarin。Xamarin可以使用C#调用各个平台系统的原生UI和底层API,可以极高程度地保证应用性能和UI流畅性。用Xamarin开发跨平台应用程序,可以方便地使用C#语言的很多先进特性和第三方类库,例如LINQ、Lambdas、XDocument、事件与委托、并行运算、JSON.NET等。在商业版订阅下,还可使用Visual Studio开发,当然也可以使用TFS让团队协作更便捷。需要注意的是,时下最流行的游戏引擎Unity也是主要用C#开发的。
LiveCode是一种相对比较特殊的跨平台开发工具,它使用了近乎人类语言的方式开发应用程序,使得开发简单应用时的效率大幅增加,而且相当亲民。其客户也不乏类似大型航空公司等极重量级的企业。
跨平台开发工具的对比
Web应用可以完全由Web前端工程师开发,只要智能设备连上网络并安装了合适的浏览器就可以通过URL访问“应用”,而Web工程师只要更新服务器上的文件,就可以实现对此“应用”的更新,无论时间成本还是维护成本都非常低廉。但恰恰是Web应用的优点导致了它的如下缺点。
1. Web应用必须连线访问,在网络条件不好的情况下启动速度会极慢。而且每次启动都会因为网络访问和UI资源(比如图片)的下载,造成用户手机流量的浪费,这在2G网络条件下就会尤其明显。优化不好的话,还可能造成用户手机欠费停机。
2. 各平台下的浏览器多种多样,页面渲染效果和JavaScrip的运行效率有较大差异,要想保证UI一致性,需要做大量CSS Hack和JavaScript代码优化工作,但很多情况下你的优化不一定起到正面作用。
几乎无法使用设备本地的API,尤其是底层API,这使得Web应用的能力十分有限。
Hybrid(混合)应用开发模式,兼顾了Web和Native。既有Web应用的低开发成本和跨平台相同UI交互的优点,又可以通过JavaScript访问常见的Native API,还可以利用HTML5的Local Storage技术在本地离线存取数据。但既然称之为混合应用,就无法逃避混合技术的缺点。
1. Web页面的渲染受限于CSS,虽然可以到达各种设备几乎相同的UI交互,但丧失了平台默认的交互习惯,与Native App形成体验差别,增加了单平台用户的学习成本,降低了平台应用认同感。
各种智能手机平台对其内置的浏览器内核大多做过一些定制化“改进”,对于一些事件处理存在差异,尤其是Android系统,在全球有几千款不同的设备,再加上操作系统版本的差别,Web App很难做到真正意义上的跨平台。
2. 虽然是混合应用,但应用界面依然没有脱离浏览器,所以混合应用依然无法达到Native App的性能和流畅性。
3. 对非稳定网络的运行环境难以细化控制,复杂条件下用户体验可能极差。
4. 在内存管理方面近乎无能,常会因此造成应用崩溃。
5. 受JavaScript语言的限制,一些相对底层的功能实现难度明显增加。
Xamarin可以通过C#这一种语言编写主流平台的真正Native App,其通过强大的编译器平衡了应用开发效率和应用执行效率,尤其是对使用C#开发的程序员而言,是莫大诱惑。Google、苹果、微软三大巨头与其都有深层合作关系,这使得Xamarin总能在第一时间推出新平台的SDK。以iOS7为例,iOS7发布当天下午,Xamarin就跟进发布了iOS7 SDK的正式版,这使得App开发商几乎可以零滞后地跟进新系统平台的App开发。在北美市场,Xamarin开发工具已经非常火热。当然,Xamarin目前也存在不少缺点。
1. 相对于HTML、CSS、JavaScript而言,C#的学习成本偏高,无法使无编程经验者达到几天入门的程度。
2. iOS的应用开发虽然可以在Windows上做,但调试过程依然无法脱离Mac系统,团队内至少要有一台Mac系统的机器作为Build Host。
3. 对于iOS、Android、Windows Phone系统平台分别做UI时,尚未推出统一的可视化设计工具。不过庆幸的是,目前Xamarin内部已开发了测试版,相信不久便可以正式公开发布。
4. 对中国个人开发者而言,商业授权版本价格有些偏高,难以大规模普及推广。
5. 中文资料偏少,尚需官方和社区共同参与完善。
跨平台开发工具选型
前面对主流跨平台开发方案做了一些对比,大家应该有了一些基本概念,那么,如何选择最适合自己的跨平台开发工具,则成为了一个不小的难题。这里我根据自己的经验给出一些建议,供大家参考。
1. 选择开发工具就像娶媳妇儿,不要选择最好的,要选最合适的。
2. 如果开发团队成员完全没有App开发经验,客户应用场景也不会受到网络影响,功能主要是数据的增删改查,不需要平台本地API,那么Web App是个不错的选择,尤其是响应式设计,客户接受度会比较高,尤其是企业应用的客户。
3. 如果需要使用少量平台本地API,对应用程序也没有较为严苛的性能要求,Hybrid应用绝对是最佳选择,因为它的性价比极高。
4. 当碰到Web性能瓶颈无法逾越;希望使用完善的应用程序生命周期;希望缩减Native App开发团队成本;希望使用一种开发语言,却还希望使用各平台下特有的第三方类库时,Xamarin是个不错的选择。虽然看起来授权价格不低,但从总体成本来看,节省了不少。
5. 微软在最近的Build大会上将WinJS开源了,并且承诺将会支持iOS、Android等平台。一旦目标达成,这也是一种不错的选择,尤其是对苦逼的Windows Phone开发者们而言。
6. LiveCode从某种程度上来说,更应该算是一种亲民的编程语言,期望让所有人都能轻松开发一个App,但作为一种解释性语言,是否能被专业开发者接受是个值得探讨的问题。
结束语
跨平台开发即将成为主流趋势,作为开发商或开发者,具备跨平台开发能力成为必需。想一想,就连过去最不愿意提及跨平台和开源的微软都敞开胸怀,拥抱跨平台,并且开源和免费了,我们还有什么理由原地踏步,固步自封呢?行动起来,一起迈步进入跨平台开发时代!
跨平台开发即将成为主流趋势,作为开发商或开发者,具备跨平台开发能力成为必需。想一想,就连过去最不愿意提及跨平台和开源的微软都敞开胸怀,拥抱跨平台,并且开源和免费了,我们还有什么理由原地踏步,固步自封呢?行动起来,一起迈步进入跨平台开发时代!
版权声明:本文系技术人员研究整理的智慧结晶,转载勿用于商业用途,并保留本文链接,侵权必究!