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


现在做客户端开发的公司都会面临一个巨大的问题,那么就是跨平台。对于目前上市面上的移动设备来说。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
/

App跨平台开发方案与抉择相关推荐

  1. 移动端跨平台开发方案解析

    原生开发 Native App是一种基于智能手机本地操作系统如iOS.Android.WP并使用原生程式编写运行的第三方应用程序,也叫本地app.一般使用的开发语言为Java.C++.Objectiv ...

  2. 跨平台开发方案的三个时代

    跨平台开发从本质上讲是为了增加业务代码的复用率,减少因为要适配多个平台带来的工作量,从而降低开发成本.在提高业务专注度的同时,能够为用户提供一致的用户体验,实现"多快好省"的效果. ...

  3. 推荐几款App跨平台开发工具

    众所周知开发App比较复杂,不仅要懂多种编程语言还要考虑高额的成本.作为开发者需要找到一个既节省成本又能快速开发App的最佳解决方案.不少跨平台开发工具便应运而生,选择一款适合自己的工具尤为重要,下面 ...

  4. 短视频App系统开发方案-短视频源码开发

    简介 短视频App已成为当今社交网络的热门应用.本文将介绍如何开发一个成功的短视频App,包括应用的功能.设计.技术要求和代码示例. 了解市场和用户需求 分析市场趋势和竞争对手 在开发短视频App之前 ...

  5. 医疗器械小程序或手机APP软件开发方案

    提供海内外高品质医疗器械 医疗器械市场国内近几年发展速度加快,但是与发达国家的部分医疗器械产品仍存在一定的差距,为给用户提供高品质多元化医疗器械产品,企业通过小程序或手机APP软件除了为用户提供国内先 ...

  6. 教育+直播APP系统开发方案

    抗疫期间教育行业也是纷纷开始了线上教学.疫情期间,以"1亿免费课程"切入在线教育战场的小度智能音箱,从2月1号以来教育技能方面的增长情况看,用户访问量平均增长了6倍,部分" ...

  7. 服装商城APP软件开发方案

    移动商城正在成为消费者进行网上购买产品和服务的一个主流方式.随着移动购物的增加,更多的零售商.批发商纷纷投资于开发移动商城APP. 传统服装行业的发展困境 1.商业地产的过度开发,线下客流下滑: 2. ...

  8. 在 WebStorm 中开发 uni-app - 用vue2实现手机APP(apk) + 微信小程序项目开发方案

    主要是跟vue2相关的开发环境与框架. 本人选型方案 结合自身知识系统(vue2,webstorm),综上相关框架了解,选择了以下方案: 开发环境:HBuilder X  + Webstorm 框  ...

  9. B2C商城APP开发方案及流程

    随着国家近几年对于互联网行业的大力支持,淘宝商城APP的火热,都带动了商城APP的开发,最为商城APP中的一个类别,B2C商城APP的开发方案是怎么样的呢?流程又分哪一些呢?接下来专注于商城APP开发 ...

最新文章

  1. 属于窄带噪声的是热噪声_时钟201系列: 非相位噪声的情况 (第一篇)
  2. zabbix3.2监控redis
  3. 盛大游戏式管理,什么时候能管理游戏式?^o^
  4. 大型网站后台架构的演变
  5. Linux 2440 LCD 控制器
  6. 知乎内容营销新动作:别处种草 知乎种树
  7. C/C++线程与多线程工作笔记0007---单线程实现文件查找系统
  8. rsync and inotify
  9. lammps数据后处理:Python Ovito CNA结构统计输出
  10. 移动产品原型和线框图设计工具介绍
  11. 学习PMBOK对ITTO输入输出的技术工具整理(关系)
  12. 如何删除Word 2010中的“向下箭头”
  13. 随机生成器,从给定列表中随机抽取一个元素
  14. 内存卡格式化的原因有哪些 内存卡格式化怎么恢复
  15. 硕士转计算机科学,普利茅斯大学计算机科学(转专业)理学硕士研究生申请要求及申请材料要求清单...
  16. 用JavaScript实现烟花效果
  17. 无线网的dhcp服务器是什么意思,DHCP是什么意思?
  18. python 文件夹拷贝
  19. 使用arch-anywhere来安装arch
  20. 从爆红到凉凉,「蚂蚁呀嘿」只用了 7 天

热门文章

  1. 敏感字段加密,叶俊峰
  2. python tell方法_Python File tell()方法
  3. 046 非常特别的一天
  4. 诺基亚n1平板电脑刷机教程_诺基亚N1平板电脑做工如何?诺基亚N1拆机图解评测...
  5. linux替换大文件内容,Linux批量替换文件内容
  6. 如何用计算机制作动态图,怎么制作Gif动画?用电脑制作Gif动图
  7. TTTTTTTTTTT 400D Dima and Bacteria 细菌 最短路
  8. 抖音文案标题怎么写,抖音标题怎么写才能上热门:国仁楠哥
  9. host映射主机名和端口
  10. Google 公司各职位年薪排排坐