2010年,Adobe公司成功地将AIR技术引入移动平台,从此,一举打开了通往移动领域的大门。而对于Flash开发者来说,该技术的出现为他们转向移动应用开发提供了便利的条件。
2010年年底,AIR已经实现了对Android、BlackBerry Tablet OS和iOS三个移动操作系统的支持。从目前的状况看,AIR在Android平台上的表现最抢眼。一方面,AIR程序在Android设备(手机和平板电脑)上的运行性能得到了用户的肯定;另一方面,当前市面上绝大部分Android手机和平板电脑都支持AIR程序,而且电子市场上使用AIR开发的程序数量呈上升趋势。
因此,本文以Android平台为目标,介绍AIR Android开发的必备知识,以及AIR Android的新功能和新特性。移动应用开发与桌面应用开发和Web应用开发相比,有其自身的特点。本文还将针对开发中的常见问题、程序设计技巧以及开发者关心的程序性能优化等内容进行重点讲解。另外,由于AIR的跨平台特性,很多内容同样适用于BlackBerry Tablet OS和iOS平台。
1.开发之前需要了解的信息
在国内知名的Flash开发者论坛上,关于AIR Android,许多朋友都提到以下问题:
AIR程序在手机上的性能如何?
可以使用Flex框架吗?如何搭建开发环境?
如何发布APK文件?
必须使用Android的SDK吗?
一定要使用真机吗?
这一节,将针对这些问题给出答案。
2.AIR Android开发的可行性
可行性无疑是开发人员优先考虑的因素,如果开发的程序根本无法在设备上运行,或者用户体验很不友好,性能远远没有达到设定的目标,那么技术就失去了实际意义。
从市场的反馈来看,用户对AIR在Android上的性能表现相当满意。2010年10月,AIR正式登陆Google电子市场(2012年3月更名为Google Play商店),在短短两个月时间里,程序的累计下载量超过了25万次。截至本书出版前,AIR的最新版本为3.1,支持Android 2.2及以上版本。
需要说明的是,并不是所有的Android设备都支持AIR。Adobe官方网站的信息显示,设备必须满足以下条件才能运行AIR:
Android 2.2或更高版本。
ARM v7-A或更高级的处理器。
支持OpenGL ES2.0。
支持H.264 & AAC H/W 解码。
至少有256 MB内存。
一般情况下,安装或升级到Android 2.2的设备都可以运行AIR,而市面上的Android设备很多都已经安装或升级到2.2或以上版本了。在Android开发者站点上,会定期发布统计数据,让开发者了解当前Android不同版本的市场状况。图1-1所示为2011年10月20日至11月3日的统计数据。数据显示了在这两周的时间内访问Google电子市场的设备所对应的Android系统版本分布。
(点击查看大图)图1-1 Android版本市场份额 |
从数据上看,Android 2.2及以上版本占主导地位。2010年年底,Android 2.2的市场份额超过50%;2010年底发布Android 2.3后,到2011年11月,Android 2.3的市场份额已经超过2.2版成为市场主流。与过去的数据进行对比可以看出,Android 的发展速度真是日新月异。从1.5版到2.2版,Android进入了成熟期,不管是性能还是用户体验,都有了质的飞跃。2.3版在2.2版的基础上增加了不少新功能,性能也有了大幅提升。Android 3.0是专门为平板电脑设计的系统,在2011年下半年的平板电脑热潮中占据了越来越多的市场份额。2011年10月份发布的4.0版则是Android一个全新的版本,从界面到功能都有了很多引人瞩目的变化,随后就有大批采用新版系统的设备涌现出来。
Adobe官方网站上列出了支持AIR的设备列表,网址为http://www.adobe.com/flashplatform/ certified_devices/。从这个列表中可以看到,备受大家追捧的Nexus 系列、HTC Desire、Motor Milestone系列等。
可能有些开发者还有疑虑:如果用户的手机中并没有安装AIR,那即便安装了自己开发的应用程序也没有什么意义。因为程序必要依靠AIR运行时(Runtime)才能运行。
事实上,这个担心是多余的,Adobe已经为我们解决了这个问题。当用户运行使用AIR技术开发的程序时,程序在启动期间会判断设备上是否安装了AIR,如果安装了,则调用AIR运行时来加载并运行程序;如果没有,则弹出图1-2所示对话框。
图1-2 提示安装AIR的对话框 |
单击“安装”按钮,设备会自动启动其上的电子市场程序,并进入Adobe AIR的下载界面。
提示--判断设备是否支持AIR,比较简单的方法是:在设备上打开Google电子市场程序,搜索“Adobe AIR”,如果能够找到该程序,则表示设备支持AIR,因为电子市场会自动根据手机型号进行过滤。
一些厂商对系统进行了个性化定制,移除了自带的Google电子市场。如果无法通过Google电子市场安装AIR运行时,也可以通过其他的应用商店安装AIR运行时,比如国内的安卓市场、AppChina应用汇等。
另外,AIR 3.0引入了一个功能来解决AIR运行时的安装问题,那就是captive-runtime,即将AIR运行时捆绑在程序中,使得程序不需要AIR运行时就可以直接运行,使程序成为完全独立的应用。
别走开,下页内容更精彩!
#p#
3.开发过程中常见的问题
虽然AIR在Android平台上表现不错,但由于其发布时间较短,再加上很多Flash平台技术人员没有移动开发经验,仍然有许多这样或那样的问题。这一节将对一些常见问题予以解答。
Q1:AIR支持哪些开发环境?
A:AIR Android开发和Flash开发都使用相同的开发环境,大家可以选择自己熟悉的开发环境比如Flash Professional CS5、Flash Builder等,也可以构建完全开源的开发环境。
AIR移动开发要求AIR SDK 2.5及以上版本,目前在Android上只支持Flash技术,不支持HTML和JavaScript。本章的后半部分会详细介绍开发环境的搭建。
Q2:是否可以使用Flex框架进行AIR Android开发?
A:可以,但只适合Flex SDK 4.5及以上版本。因为Flex SDK 4.0以及更早的版本没有针对移动设备进行优化,如果把用这些框架开发的程序放到设备上运行,会遇到很多“不算问题”的问题,比如,你会发现无法用手指去拖动那条狭长的滚动条,按钮总是点不中,文本会被弹出的虚拟键盘挡住等。当然,最重要的是程序的性能不佳。
幸运的是,这些问题在新一代的Flex SDK中得到了解决。Adobe已经发布了代号为Hero的Flex SDK 4.5,同时发布的还有Flash Builder 4.5。新一代的Flex SDK采用了全新的设计结构,同时兼容Web、桌面和移动平台,大大简化了开发流程。
Q3:如何输出APK文件?
A:APK是Android package的缩写,即Android安装包,文件名以.apk为后缀,是JAR文件的一种变体,类似Windows系统上的EXE文件。
AIR SDK自带的编译工具,除了支持打包为AIR文件外,还支持APK文件。不管是基于Flash Professional CS5的开发环境,还是Flash Builder 4.5,都提供了图形化配置界面,简化了发布流程。另外,我们也可以使用命令行的方式,实现自动编译、打包和部署的“一条龙作业”。
Q4:一定要使用真机吗?
A:这也是开发者关心的问题之一。可能刚接触Android开发的开发者没有合适的设备,所以Android SDK提供了模拟器工具,让开发者在PC上就能体验各个版本的Android系统。在模拟器上,除了没有摄像头、Google电子市场等特殊的功能以外,基本上和真机没有区别。因此,不一定使用真机进行开发。
不过,在模拟器上无法看到程序真实的性能表现,故真机测试是移动开发最重要的一个环节。即便是安装了相同版本的操作系统,在不同型号的设备上,程序的表现也可能会有差异。因此,只有在真机上测试才能得到最准确的信息。
Q5:是否支持跨平台?
A:如上文所述,除了桌面操作系统,AIR已经实现了对Android、BlackBerry Tablet OS和iOS三个移动操作系统的支持。从技术角度看,针对Android和BlackBerry Tablet OS系统采用的是和桌面类似的方式,即Runtime(运行时)+ 应用程序,程序依托运行时才能运行;而在iOS平台上,由于Apple的限制,Adobe采用了一种间接方式,为开发者提供了一套打包工具,可以将AIR程序连同运行时一起编译为iOS原生代码,程序不需要运行时就可以运行。因此,AIR在Android和BlackBerry Tablet OS上更符合跨平台的条件。
经笔者测试,同一个程序,只要配置好相关参数,一行代码都不用修改,就可以将应用部署到Android手机和PlayBook(采用BlackBerry Tablet OS的平板电脑)上。当然,前提是在程序设计中充分考虑了跨平台的需求。
Q6:AIR Android和Flash Lite有什么联系?
A:两者没有任何联系。Flash Lite是Adobe针对移动开发的第一代解决方案,和AIR相比,它更像是针对低端智能手机的Flash Player,即使在硬件条件很有限的设备上,也能部署Flash内容。几年前,智能手机的硬件水平远没有现在这么先进,如今,移动设备迅猛发展,连智能手机都开始运用“双核”技术了,完全有能力运行更复杂的程序。因此,Flash Lite逐渐失去了用武之地。
Q7:Adobe不再继续为移动设备开发Flash Player,是否也会停止AIR移动版的开发?
A:不会,两者没有任何联系。2011年11月,Adobe宣布,该公司将正式停止为移动浏览器、操作系统开发移动版本Flash Player播放器。停止开发移动版Flash Player后,Adobe将把主要精力放在AIR桌面和移动版本开发上,因此,对AIR移动开发者来说,这其实是一个好消息。
4.优势和局限性
我们常说的Android开发,是指以Java为编程语言,使用官方提供的SDK工具进行的开发。Android SDK提供了一整套功能强大的API,涵盖了从图形界面到系统底层控制等方方面面的功能。另外,官方还提供了一套NDK工具,允许开发者使用传统的C或C++语言编写程序,进行更底层的数据操作,进一步提升程序性能。
(1)优势
既然Android自有的开发方式已经很完善了,那我们为什么还要使用AIR呢?笔者认为,主要有以下两点因素:
1)AIR和Android自有的开发方式并不冲突,相反,AIR对Android平台是一个很好的技术补充。
Flash技术的优势在于界面呈现、交互处理。比如制作一段复杂的动画,使用Java技术也可以实现,但肯定会遇到一些困难,花费不少时间,如果使用Flash技术,则会轻松很多。另外,AIR还扩展了Android平台的技术生态圈。如今在移动平台领域竞争激烈,Android引入AIR技术,能够吸引庞大的Flash开发者队伍加入进来,对Android平台而言,有百利而无一害。
2)AIR的跨平台特性依然是吸引开发者的利器。
对移动开发者来说,跨平台历来是个难题。平台间的移植所耗费的时间和人力成本,对企业而言,是一笔不小的支出。因此,对一些企业来说,AIR是一个相当经济的解决方案。AIR支持多个桌面操作系统,包括Windows、Mac和Linux,现在这个名单上又多了Android、iOS和BlackBerry Tablet OS,而且Adobe还在努力支持更多平台,在未来的一段时间内,这个名单可能还会继续增长。
(2)局限性
当然,AIR也有自己的局限性。
1)不支持所有版本的Android系统。
AIR只支持Android 2.2及以上版本,且需要安装运行时,对设备的硬件要求比较高。如果用户需要支持所有型号的设备,那么AIR就无法满足。不过这个缺点几乎可以忽略不计,因为目前Android 2.2和2.3已经成为市场主流,对早期的版本提供支持意义不大。
2)AIR不提供访问系统底层资源的API。
这也是AIR在各个平台上的“通病”。具体到Android设备上,AIR没有针对移动设备提供额外的功能,比如获取用户的通信录、短信、通信记录等数据。
AIR 3.0引入了一个新功能—本地扩展(AIR Native Extension,ANE)。ANE允许开发者使用本地原生API为AIR编写扩展库,来实现AIR API无法做到的功能,包括访问系统底层资源。有了ANE这个利器,可以使很多不可能的任务成为可能。ANE可以被当做共享库分发,目前已经有很多开发者将自己编写的ANE分享出来,相信在未来一段时间,AIR在移动平台上的应用与原生开发环境制作出来的应用的差距会越来越小。