@liuruicai
2017-06-28T11:07:19.000000Z
字数 2109
阅读 530
移动开发,
Learn
- 如今,创建跨平台的原生应用尽管是可行的,但是当前的实现状况离完成还差的很远。大多数移动应用的重心都是GUI(图形化用户界面)的实现。几乎所有的关键业务应用逻辑都位于服务端,移动端会通过Web服务访问服务端的业务逻辑。
- 大致来讲,在移动应用中,尤其是在业务流程自动化领域,大约60%的代码都是在处理GUI的创建和管理。
因为iOS和Android在用户界面(User Interface,UI)和用户体验设计(User Experience Design,UXD)上有着很大的差异,所以为其创建一个统一的GUI包装器并不是一项简单的任务。尽管Xamarin和其他的厂商在这方面已经做了很多超前的工作,但是离完美还差得很远。如果你能够在框架的限制下设计应用的话,那么它能运行良好,如果你所需要的内容不匹配框架的愿景的话,那么就需要很多额外的工作,并且要编写平台相关的代码。
在原生跨平台开发中,一种很流行的方式就是使用跨平台库来编写业务逻辑和Web服务,而GUI相关的代码使用平台特定的库来编写。根据应用的不同,这样能够实现30%到60%的代码重用。
名称 | 发布时间 | 主要语言 | 特点 |
---|---|---|---|
Xamarin | 2011 | c# | M$的支持,使用现有C#开发人员 |
Appcelerator Titanium | 2012 | javascript | Web开发范式, 收费的MBaaS(移动后端即服务),很多问题 |
NativeScript | 2014 | Javascript | 很新,但是很有潜力 |
QT | 1995, 2013iOS和Android | C++与QML | 历史最悠久, C++难掌握 |
RubyMotion | 2012,2014iOS和Android | Ruby | 需要为iOS和Android编写独立的GUI代码,但是业务逻辑可以跨平台重用 |
- 不管iOS、Android,还是Windows Phone,在它们的SDK中都包含了一个非常高级的浏览器组件。借助这个WebView组件,程序员能够使用标准的HTML5 Web技术实现对应用的设计和编码。最终,在应用的组成中,至少会有一个原生frame还会有在WebView中执行的HTML/JavaScript——这也是为什么它们被称为“混合”应用。
- 在需要传感器输入的特性中,比如地理位置、摄像头,以及像访问文件系统这样的底层的功能,通常会使用混合应用框架所提供的JavaScript-to-native桥。
1. 借助像framework7(http://framework7.io/)这样的库,我们甚至有可能使用基于CSS的主题来支持底层操作系统的默认外观。
2. 打包到应用内(在混合应用中,HTML、CSS和JavaScript代码是随着应用一起发布的。因此,加载UI相关的代码并没有延迟,这与通过网络加载Web站点是不同的。)
3. 在现代功能强大的手机上,我们可以使用HTML 5技术创建出很炫酷的UI。
4. 尤其是对于B2B应用,通过使用Cordova,有可能实现85-90%的跨平台代码重用。
应用开发的所有可选方案
不足 | 原因 | |
---|---|---|
1 | H5混合在中低手机反应迟钝 | 硬件能力来执行流畅的HTML5动画 |
2 | H5混合更耗电 | 渲染现代的HTML和CSS会用到像渐变这样的高级特性,它会使用大量的CPU和GPU资源 |
3 | 代码更复杂 | HTML5混合应用依赖于回调风格的编程 |
4 | 难于实现特定平台的外观和体验 | 原生跨平台应用的SDK还不成熟 |
5 | 很多成功的应用都是原生应用 | 设计和构建一款针对多种平台的应用实在是很困难,这些平台都有特定的用户体验方式。所有的平台都定义了自己的人机界面指南 |
6 | 跟不上移动操作系统的升级 | 移动操作系统正在以很快的速度演进。每年会有越来越多的特性添加进来,这为跨平台SDK厂商带来了很多的工作,因为他们需要在操作系统新版本发布之后的很短的时间内,就拿出SDK的新版本。 |
优势 | 原因 | |
---|---|---|
1 | 更快和降低成本 | 50%-80%的代码重用 |
2 | 好维护 | 如果在通用代码库中发现了bug,我们只需修正一次即可。 |
3 | 易于单元测试 | 通用的代码,只需编写一次单元测试 |
4 | 学习成本低 | 我们可以使用已有的编程技能 |
5 | 更好的上线时间和资源利用率 | B2B应用和业务流程自动化应用来说,它比外观和体验更为重要 |