App跨平台开发方案与抉择

内心强大才敢于承认错误,但是首先你要敢于去试错。



现在做客户端开发的公司都会面临一个巨大的问题,那么就是跨平台。对于目前上市面上的移动设备来说。Android、IOS、WindowsPhone、BlackBattery等等移动设备系统,让我们在开发适配上都很头痛。

但是由于Google与Apple公司的竞争,现在创业公司主要关注的就只有是Android和IOS应用程序了。但是,就这两个系统的设备就够我们折腾了。从系统版本适配、屏幕适配等等。

朋友的创业公司,对于开发一个简单的App,Android客户端请了2位同学。IOS客户端请了2位同学。按照帝都这个物价,就单客户端的开发工程师,每个月就得拿出7W块钱养着他们。

而相应的测试,接口,UI出图都得做一个double的工作。那么我们平时工作开发中为什么不选择一些跨平台的开发手段呢?


目前的App跨平台解决方案

这里,我说一下我的总结和思考。总的来说,现在的跨平台方案一共分为一下几种:

  1. 基于Html5的网页App方案。
  2. 使用第三方语言进行映射的方案
  3. 3.

基于浏览器Webview的跨平台

基于WebView的跨平台解决方案相信大家已经很熟悉了,而使用Web开发对于一个Web开发工程师也是一个轻而一举的事情。

HTML5方案的主要不足则在于功能和性能方面,这主要是因为HTML5应用的能力严重依赖于系统自带的Web引擎:iOS的UIWebview、Android的Webview等,此类组件的HTML5能力相比Safari for iOS、Chrome for Android都要差一截。

而且,对于原生系统的新能优化,如垃圾回收机制、ListView的复用机制等等,系统级别的优化,对于使用WebView来实现的逻辑,往往很难做到。

另外在Android平台上,由于系统碎片化比较严重,不同Android版本的Webview的HTML5能力也有较大差异,导致相应的HTML5应用一致性难以保证。

当时,目前还是存在业界的几家公司提供的解决方案如下:

React.js

Fackbook的开源框架,相对于其他的JS框架来说,react js提出了一个极为重要的概念。那就是 Virtual DOM。

在Web开发中,我们总需要将变化的数据实时反应到UI上,这时就需要对DOM进行操作。而复杂或频繁的DOM操作通常是性能瓶颈产生的原因(如何进行高性能的复杂DOM操作通常是衡量一个前端开发人员技能的重要指标)。React为此引入了虚拟DOM(Virtual DOM)的机制:在浏览器端用Javascript实现了一套DOM API。

JqueryMobile

jQuery Mobile是jQuery 在手机上和平板设备上的版本。jQuery Mobile 不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架。支持全球主流的移动平台。现在类似的框架还有:jQTouch、 Sencha Touch 等等。

对于FE来说,JQuery无疑是一个极为好用的js框架。多数开发者使用JQuery Mobile的主要原因是由于,熟悉JQuery,能够上手快。

PhoneGap/Cordova/AppCan/…

这类的框架,或者具体说已改算一个整套解决方案。他们是通过针对js的封装,向web开发者,提供给一些原生功能的API。通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头、麦克风等。

这些厂商往往还将它们做成了一整套的解决方案。API/在线编译/编译器/等。这些规则制定的厂商都不是一线的大公司,作为小公司而言,这些工具就变得商业目的特别浓厚。


基于交叉编译的跨平台

我们都知道,无论事IOS系统还是Android系统。他们的底层运行的都是以Unix为核心的系统,而且都对C/C++支持性良好。这就让我们能够通过使用底层的方案,配合OPEN GL来实现自己的App系统架构。

Cocos2dX/CrossApp

Cocos2d不用多说,在圈子内的名气非常大。是一个著名的跨平台游戏引擎,多是用作开发游戏。当年最著名的扑鱼达人,就是使用了Cocos2d-X作为游戏引擎开发。Cocos2D基于OpenGL ES进行图形渲染,从而让移动设备的GPU性能发挥到极致。

毕竟Cocos2d是游戏引擎,很多开发方式上与开发应用程序都不一样。所以国内就有另一个开源项目,CrossApp。

CrossApp是抽取了cocos2d-x的渲染驱动模式。若直接使用游戏引擎,程序生命周期中,在不断重绘,渲染驱动模式的缺点就是CPU占用高因此耗电。显而易见,这种不断的重绘方式对于游戏可能影响不大,但对于APP来说太浪费了。因此,我们针对应用程序的特性,将渲染机制改为事件驱动模式。这种模式的渲染要有外界触发才会重绘,在没有外界触发的时候画面静止,渲染停止,以达到节能的效果。

Xamarin

Xamarin始创于2011年,旨在使移动开发变得难以置信地迅捷和简单。Xamarin的产品简化了针对多种平台的应用开发,包括iOS、Android、Windows Phone和Mac App。Xamarin由许多著名的开源社区开发者创立和参与,而且也是Mono项目的主导者——C#与·NET框架的开源、跨平台实现。


结论

跨平台的开发发难问题在于,功能基本实现不是完美实现。同一套代码要兼顾不同平台,很多实现就变成折中实现了,原本一些很优秀的平台特性为了兼顾另一个平台用不了。

Facebook之前还打算用html5来进行移动开发,开发了半年发现坑太多了,还是转成ios的native开发。

Fackbook准备退出的React Native框架号称是能够良好的解决移动端跨平台开发的难题,现在还没有开源,我们可以拭目以待。


Hybrid开发混合App

就是混合开发的App。Andorid+Html5 or IOS + Html5。理论上来说,混合开发的App算不上跨平台开发(我们可以简单的认为,就是使用原生的开发)。那么问题是,既然两者都有好处,那么我们就将一些体验、操作、权限要求不高的页面,使用Web来开发。其他的地方,我们还是使用原生的SDK进行研发。(转了一个大圈,完全没有跨平台,发现然并卵)


成本分析

当然,是否使用一些开源的跨平台框架,制作跨平台的App应用程序,还取决于我们的公司业务范围和自己公司的技术人才积累。下面,笔者简单的总结了一下又如下几点原因,让大家在选择方向与平台的时候做一个良好的抉择。如下表:

原因\方案 原生App(Android + IOS) Web跨平台方案 交叉编译跨平台方案 混合App方案
性能 一般 一般
用户体验
人才招聘 一般 较为容易 一般
开发工作量 工作量大 一般 工作量大


/*

* @author zhoushengtao(周圣韬)

* @since 2015年9月10日 下午 18:10:00

* @weixin stchou_zst

* @blog http://blog.csdn.net/yzzst

* @交流学习QQ群:341989536

* @私人QQ:445914891

/

版权声明:转载请标注:http://blog.csdn.net/yzzst 。 本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 07:13:08

App跨平台开发方案与抉择的相关文章

企业app软件系统开发方案

app开发公司商宇科技表示:互联网+"是近两年最为火热的商业模式,而随着移动互联网时代的到来,移动互联网+将逐渐成为企业发展的主要方向.在如今APP软件开发的高潮时期,众多企业都想通过企业APP软件实现线上线下的联动,从而实现企业的移动营销战略. APP软件开发是企业开展移动互联网营销的基本工具,那么在开发APP软件之前要先做好哪些准备工作,从而让开发项目开展的更加顺利和流畅呢? 一.选好操作系统 开发APP软件,首先需要选择好操作系统.目前APP开发市场上最主要的操作系统是安卓和苹果ios.可

PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [3] 首页 APP 接口开发方案 ② 读取缓存方式

以静态缓存为例. 修改 file.php line:11 去掉 path 参数(方便),加上缓存时间参数: public function cacheData($k,$v = '',$cacheTime = 0){ //文件名 $filename = $this->_dir.$k.'.'.self::EXT; ..... line:25 把缓存时间设置为 11 位的数字,如果不满 11 位,则在时间前面补 0.再把缓存时间和缓存内容进行拼接: $cacheTime = sprintf('%011

PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [2] 首页 APP 接口开发方案 ① 读取数据库方式

方案一:读取数据库方式 从数据库读取信息→封装→生成接口数据 应用场景: 数据时效性比较高的系统 方案二:读取缓存方式 从数据库获取信息(第一次设置缓存或缓存失效时)→封装(第一次设置缓存或缓存失效时)→返回数据 ↓                                              ↑ 缓存(缓存生效时)     →   →    →    → 方案三:定时读取缓存方式(crontab 定时任务) 封装并返回数据 ↑ 数据库→crontab→缓存 ↑ http 请求 ==

web App 跨平台开发Mac环境配置

1.下载安装node.js.安装完成后,可以直接在终端查看node,npm版本. 2.安装Cordova 在终端输入 $ npm install -g cordova 3安装ionic 安装成功 4.ionic创建项目 默认三种模式 5.运行我们刚才创建的Ionic项目 $ cd myApp $ ionic platform add ios $ ionic build ios $ ionic emulate ios

App软件开发的10个常用技巧

移动应用市场用户争夺战日益激烈,原来做APP拼想法拼创意拼是否抓住用户痛点.现在,精细化用户体验成为了一个APP能否留存用户的关键问题,一旦用户觉得体验不畅,马上就有竞品APP后补,如何开发高性能的移动应用,小编总结了以下十大技巧: 1.   规划评估App开发的核心功能 用户体验开始于APP开发初始规划阶段,当你梦想开发一个APP改变世界之前,先想好APP主要解决用户的哪些真实需求,提炼出APP的核心功能,一个APP并不是功能越丰富越好,核心功能才能为用户带来不可替代的价值. 登录APIClo

什么是APP???APP的开发类型又分哪几种???

开发者们都知道在高端智能手机系统中有两种应用程序: 一种是基于本地(操作系统)运行的APP --Native App: 一种是基于高端机的浏览器运行的App --WebApp因为这些高端智能手机(Iphone.Android)的内置浏览器都是基于webkit内核的,所以在开发WEBAPP时,多数都是使用HTML5和CSS3技术做UI布局.当使用HTML5和CSS3l做UI时,若还是遵循着一般web开发中使用HTML4和CSS2那样的开发方式的话,这也就失去了WEBAPP的本质意义了 一种是基于上

电商app功能开发流程+方案

hello,各位大咖!开发一款app到底有哪些流程?从零到完善运营,还有版本择选,方向度可精准?分享分享感想: 一款移动电商APP开发从零到完善运营,大概要经历一下几个步骤流程:1.电商APP开发需求:要开发制作一款移动电商APP,不仅仅要了解用户可以在APP上实现什么功能,还要了解企业为什么要制作一款电商APP,在这个基础上,要了解满足上面的功能,APP需要支持哪些功能.如果APP的功能仅仅与网页端的功能没有太大差异的话,那么开发的意义也不大.当这些确定后,再去跟开发制作公司去谈. 2.电商A

10分钟,AppCan帮你搞定跨平台开发APP问题!

跨平台开发APP时,开发者总会遇到一些问题,如打包失败等等,尤其对于iOS来说,由于它的限制性会导致一些状况发生(如证书上传问题等),小编总结了几个AppCan在线IOS打包失败常见的情况及排查技巧,有所困扰的同学可以作为参考,对问题进行排查. 打包失败分为以下几种情况: 1.插件重复勾选:请检查"公共插件"与"我的插件"(自己上传的插件)是否有重复插件. 2.证书问题:请参照开发指导→iOS证书申请流程的指引文档,在苹果官网正确申请证书.证书上传后检验通过不代表证

三大跨平台开发App分析

三大跨平台开发App分析,目前跨平台开发的主流有三大家主流:Cordova.Xamarin.Unity. 目前跨平台开发的主流有三大家主流:Cordova.Xamarin.Unity. Cordova原名PhoneGap,是可以用Eclipse编辑Javascript搭配node.js写server端的程序,来产生不同平台的App.现在微软在Visual Studio 2015中,加入了Cordova项目,并整合了插件的导入流程,使开发者可以经由界面的操作,可以导入插件,甚至是Git的Addre