当前位置:文档之家› ADOBE AIR完整入门与开发实录——使用FLEXFLASHAJAX开发AIR应用 第02章

ADOBE AIR完整入门与开发实录——使用FLEXFLASHAJAX开发AIR应用 第02章

第2章
Adobe AIR
在这个章节中, 我们将详细了解一些 AIR 的基本概念,这部分内容可能偏理论 化一些,建议读者耐心阅读,这些基础知 识对以后的开发是很有裨益的。 在跟很多朋友介绍 AIR 的时候, 作者 不断强调一点:AIR 是一个运行时,这样 有助于你理解 AIR 与其他技术的区别。 就 像很多读者在理解 Flash 上的偏差(认为 Flash 就是 Adobe 的创作工具 Flash CS, 其实 Flash 包含了多种概念,从最基本的 Flash Player 到 基 于 它 来 制 作 应 用 的 Framework 或工具), 如果你初次接触 AIR 或许也会对它一头雾水,没关系,只要理 解了 AIR 是一个运行时, 就基本上弄清了 “AIR 是什么”这个问题。 如果你是一位一直关注于 AIR 的开 发者,可能了解它的前身—— Apollo,不 是太阳神阿波罗, 而是 AIR 正式版推出之 前的开发代号。 这个响亮的名字或许也赋 予了 AIR 带给 Web 和桌面端的革命性的 意义。而它所包含的各个特性,将在本章 为大家做详细的介绍。 本章的最后推荐了一些不错的例程, 建议读者多安装一些优秀的 AIR 应用, 在 使用的过程中你就会对 AIR 有一个感性 的认识。
关键词 桌面应用 本地化 AIR 安装与部署 AIR Installer Badge 数字证书 AIR 开发工具 AIR 文件结构 配置文件 AIR 安装目录

Adobe AIR 完整入门与开发实录 使用 Flex\Flash\Ajax 开发 AIR 应用
2.1
什么是 Adobe AIR
依照惯例,引入问题——什么是 Adobe AIR?我们先看看 Adobe 的解释。 Adobe AIR 是一个跨操作系统运行时。它使开发人员能够将 HTML、Ajax、Adobe Flash 和 Flex 技术结合到一起,以在桌面上部署富互联网应用程序(RIA)。Adobe AIR 使开发人员能 够使用熟悉的工具(如 Adobe Dreamweaver CS4、Flex Builder3、Flash CS4 Professional 或任 何文本编辑器)来构建应用程序并轻松交付一个可跨操作系统使用的应用安装程序。 如果读者理解运行时的概念,那么理解这段话就很容易。如果对运行时的概念不是很熟 悉,那么可以把它看做浏览器中的 Flash Player,为运行于它之上的 RIA 程序提供平台支持。 虽然这个比喻不是很准确,但它有助于更好地理解运行时的概念。 后面一句话也很容易理解,如果读者是一个传统的 Web 开发人员,那么可能完全不了解 如何创建桌面应用,如何制作程序安装包,以及如何安装部署应用程序,而这些 AIR 会帮我 们完成,开发者不必关心底层是如何实现的。这个简化的过程对 Web 开发人员太有用了,可 以非常简单地制作一个桌面程序。 可以这样认为,Adobe AIR 就是连接 Web 应用和桌面的桥梁(见图 2.1),结合两者各自的 优势,制作出更富表现力和具有更好体验的桌面程序。
图 2.1
跨越 B/S 和 C/S
说到 AIR,不得不说的一个要素是——跨平台。跨平台看来已经成为 Adobe 推广平台级 应用的杀手锏,AIR 也毋庸置疑地继承了这个特性。跨平台的好处自然不必多说,至少为应 用部署节省了很多的财力和物力。比喻得不恰当一点,相当于只要做好了应用,就可以满天 下使用了。因为各个平台下的表现是一致的,无须做(或只需做很少的)考虑平台的工作。 下面来看看 AIR 对操作系统的支持情况。 Adobe AIR 可用于 Microsoft Windows 2000、Windows XP、Windows Vista Home Premium/Business/Ultimate/Enterprise,以及 Mac OS X 版本 10.4 或 10.5。Adobe AIR 的 Linux 版本仍在开发中。 这就相当于已经囊括了如今所有的主流操作系统了。 很多开发者非常 关心 Linux 版本的情况,截止到发稿日,Adobe AIR 已经正式支持了 Linux 的三个版本。 当然,如果考虑大部分用户的使用情况,可能还是使用 Windows 版本的用户多一点,而
[
12
]

第 2 章 Adobe AIR
Adobe AIR
最新的 AIR 1.5 版不但有支持 Windows 的正式版,而且还支持语言的本地化(中文安装过程), 这对中国的用户来讲是个非常好的消息。 既然说 AIR 跨越浏览器,那么,很多读者会关心,与浏览器相比,AIR 可以带给我们哪 些不一样的特性呢? Web 浏览器使用户能够与通常位于某个服务器上的某个网站上的内容和应用程序进行交 互。Adobe AIR 使用在浏览器中使用的功能和技术构建,以支持在桌面上进行应用程序的部 署。 通过为用户和开发人员提供一个关于如何交付和使用借助 Web 技术构建的应用程序的选 择,Adobe AIR 很好地补充了浏览器。 下面看看 Adobe 为开发者制作的 AIR 和浏览器的特性对比,如表 2.1 所示。
表 2.1 浏览器中的 RIA 与桌面上的 RIA 的比较 桌面上的 RIA 已安装的应用程序拥有更强大的持久性、能力 和功能 应用程序可从浏览器中顺利安装或像传统的桌 面应用程序一样下载和安装
浏览器中的 RIA 应用程序交付 可以轻松地发现、研究和使用应用程序
安装
无须进行应用程序安装
应用程序更新 支持多个操作 系统 编程语言
它使得可以像将新内容推送到某 通过将新内容推送到某个网站,来更新 AIR 提供 API, 应用程序 在多个操作系统和浏览器上运行应用 程序 个网站一样轻松地更新应用程序 AIR 应用程序是跨平台的, 因此可以在多个操 作系统上安装和运行
JavaScript 由浏览器提供, ActionScript 集成的 JavaScript 和 ActionScript 虚拟机与浏览 而 由 Adobe Flash Player 提供 RIA 仅可以在可见的浏览器窗口中运行 器兼容 应用程序可以在后台运行, 或者可以像传统的 桌面应用程序一样提供通知
后台功能
持久性
活动仅限于浏览器会话。当浏览器关闭 RIA 可在桌面安装并可用。它们在本地存储信 时,信息会丢失 息并脱机操作 应用程序已沙箱化,因此桌面集成受到 应用程序可以访问某个桌面文件系统、剪贴板、 限制 拖放事件、系统任务栏/通知等
桌面集成
用户界面控制
RIA 在某个浏览器窗口中运行, 该窗口拥 RIA 拥有一个可定制的用户界面和桌面集成, 有它自己的控件、品牌及与桌面的集成 使用户能够获得品牌体验 应用程序具有有限的本地存储, 可能会 应用程序拥有无限制的本地存储和对本地数据 遭到浏览器的破坏 库的访问权限,以及加密的本地存储
数据存储
最新的 AIR 1.5 版已经支持多国语言,可以帮助实现多语言版本的应用。Adobe AIR 目前 全面支持下列语言构建的应用程序——繁体中文、简体中文、英语、法语、德语、意大利语、 日语、朝鲜语、葡萄牙语、俄语、西班牙语。 支持上述语言已经足够应付大部分的情况了, 当然以后肯定会支持越来越多的语言版本。 AIR 支持 PDF 的显示,包括 PDF 中的表单都可以正常操作,但前提是用户的系统中安装
[
13
]

Adobe AIR 完整入门与开发实录 使用 Flex\Flash\Ajax 开发 AIR 应用
了 PDF 的阅读器,换句话说,AIR 不会捆绑 PDF 的阅读器,毕竟这要付出相当大的字节数大 小上的代价。 在下述章节中, 我们还会介绍到 AIR 的两种不同的开发模式, 基于 HTML 和 Flash Player, 而这两种技术都是现存的技术(见图 2.2)。既然是现存的技术,那么首先是比较成熟,无论是 开发文档、开发技巧,还是应用实例都有很多。其次就是利用现存的技术,意味着不需要再 付出额外的学习成本,使用原先的知识积累就可以构建全新的 AIR 应用(见图 2.3)。听上去是 不是非常不错?事实上确实是这样的。
图 2.2
AIR 的应用架构
图 2.3
AIR 使用现存的开发技术
最后还有一点, 既然说 AIR 如此优秀, 那么我们需要为 AIR 支付费用吗?答案是不需要, AIR 是免费的。 Adobe AIR 应用程序运行时(如 Adobe Reader 软件和 Adobe Flash Player 运行 时)可免费获得。可下载的 Adobe AIR SDK 也是免费的。这样就可以打消开发者在应用成本上 的疑虑了。
2.2
AIR 和第三方打包软件的对比
有过比较资深的 Flash 开发经历的朋友可能知道,在 AIR 出现之前,如果我们要把 SWF 文件作为桌面端程序运行(即通常所说的打包为 EXE 文件),就要借助于第三方的打包工具,
[
14
]

第 2 章 Adobe AIR
Adobe AIR
这些打包工具一般会为我们提供如下的特性: 支持自定义外观,去除操作系统的镶边。 将所有文件打包到一个文件。 支持自定义图标和窗口标题。 有的还会支持桌面 API,可以通过 API 进行文件访问,进行数据库读写等操作。 关于打包工具,国外比较知名的应该是 MDM ZINC(国内也有一个 FlashPacker 还不错, 不过已经很久不更新了)。ZINC 的功能在同类工具中算是比较全面的,它可以支持自定义外 观、打包、跨平台,还可以通过它提供的 API 访问数据库。关于它的详细信息,读者可以访 问其官方网站,注意这是一个收费软件:
https://www.doczj.com/doc/231661135.html,/software/zinc/
我们可以列一个表格(表 2.2),简单对比一下 MDM ZINC 和 AIR 的特性。
表 2.2 MDM ZINC 和 AIR 的特性比较 AIR 免费 Windows、MAC、Linux 支持 提供 支持 支持 Flash 或 HTML+Ajax
MDM ZINC 价格 操作系统支持 自定义 UI 桌面 API 数据库访问 在线安装和更新 开发技术 US $199.99 Windows、MAC、Linux 支持 提供 支持 无 Flash
从这里可以看出,AIR 在成本控制和开发技术的选择上更胜一筹,而且随着 AIR 的逐渐 普及,比如进入移动领域,它会像 Flash Player 一样成为一种普及率很高的承载平台,这个 时候选择 AIR 就会比使用第三方打包工具少付出很多的精力。
2.3
AIR 的安全性
众所周知,Web 应用的一大特性是安全性,由于浏览器的安全限制,Web 应用无法对用 户的本地操作系统做相关操作, 包括存储数据, 读取/写入文件等。可以说, 这是一把双刃剑, 在保护了用户系统安全的同时,也限制了 Web 应用的功能发挥和用户体验,包括离线数据、 文件存储等。 而 AIR 在跨越了浏览器障碍的同时,在安全性方面是否有所保障呢?答案是肯定的。 首先,不管是 HTML 模式还是 Flash Player 模式,如果要实现触及操作系统的操作,必 须使用 AIR 提供的 API,如果 AIR 没有提供相关的 API,那么操作就无法进行,也就是说有了 AIR,开发者也不能在桌面端“为所欲为”,AIR 在开放这些桌面操作 API 的同时,也对这些 API 做了严格的安全性限制(具体的 API 会在后面的章节中做详细的介绍)。
[
15
]

Adobe AIR 完整入门与开发实录 使用 Flex\Flash\Ajax 开发 AIR 应用
其次,在客户端安装 AIR 应用需要管理员权限,如果权限不足,是无法完成安装的(如果 使用 Windows Vista 操作系统,就能看到明显的提示信息对话框)。其访问操作(本地/网络) 也将受限于操作系统的安全级别。 第三,所有的 AIR 应用都必须拥有创建者的数字签名,在安装的时候,用户可以注意到 这些信息,对于用户认为可能存在安全隐患或不信任的应用,用户可以取消安装进程。 最后,AIR 也有它自己的安全沙箱和安全模型。因为 AIR 应用程序是永久安装在某个用 户的计算机上的,AIR 拥有一个更像桌面应用程序的安全模型。浏览器沙箱为运行来自各种 来源(包括匿名的或不信任的网站)的 Web 应用程序提供了一个受限制的环境。AIR 与其他桌 面运行时一样,提供强大功能(如本地文件访问)的应用程序,这些功能应该仅提供给“受信 任”的应用程序。AIR 通过在最终用户的系统上安装和配置应用程序先前提供的有关应用程 序安全性的信息,改进了大多数桌面运行时的安全模型。 AIR 应用程序安全沙箱中的 SWF 可以通过脚本访问来自其他域中的 SWF 文件, 但是默认 情况下,外部的 SWF 要想访问 AIR 应用程序安全沙箱内的 SWF 则会受到约束。 AIR 程序沙箱中的 SWF 文件和 HTML 内容可读取任何域中的内容及其数据。 随 AIR 程序安装的 SWF 文件不必寻找 cross-domain(跨域)策略文件,要提升权限,可调 用 Security.allowDomain()方法。 AIR 为 AIR 程序安全沙箱中的 SWF 文件和 HTML 内容提供了增强型的特权, 其中包括读 取和写入本地资源及文件。 因为 AIR 运行于本地,所以要注意到,使用 AIR 也会有潜在的安全风险,这是因为虽然 使用了 Web 技术,但是却不受浏览器安全沙箱限制,也就是说 AIR 程序可能有意或无意地破 坏本地系统,AIR 正试图把这种风险降低到最小,但是类似此方面的漏洞仍然可能出现。 产生风险的可能性主要来自于读取外部数据,所以应注意,不要读取不信任的数据,比 如调用不被信任的 SWF,这种 SWF 文件会以超出浏览器的权限运行。
2.4
安装 AIR 运行时及例程
要安装基于 AIR 的应用程序,用户需要首先安装 AIR 运行时(就像要观看 Flash 动画时必 须安装 Flash Player 一样)。这个运行时是免费的,而且很容易获取到。一般情况下,用户可 以通过如下两种方式安装 AIR 运行时: 下载独立安装文件,自主安装。 通过 AIR 针对 Flash Player 的扩展,在线无缝安装 AIR 运行时。 值得注意的是第二种方式,这是一种非常便捷的安装 AIR 运行时的方法,对用户而言, 可能只需要打开浏览器,访问一个 Flash 动画,即可完成 AIR 运行时的安装,从而避免了繁 琐的下载、安装过程,这在用户体验的角度来讲也是一个非常重要的提升。 而且使用这种方式的大部分情况,是将 AIR 应用与 AIR 运行时捆绑安装的,就是说,用 户在没有安装 AIR 运行时的情况下,可以访问一个 AIR 应用的安装地址,使用一定的机制,
[
16
]

第 2 章 Adobe AIR
Adobe AIR
在用户的桌面端先安装 AIR 运行时,然后安装 AIR 应用,这个过程是顺畅的、无缝结合的, 听起来是不是很酷呢?实现起来其实也不复杂,稍后的章节中将学习如何实现这个特性。 最常规的方式是下载独立安装文件,手动安装。应确认电脑上没有安装 AIR 运行时,如 果有旧的版本,请先将它卸载(最新的 AIR 版本是 1.1)。然后可以通过如下的地址获取 AIR 的 安装文件:https://www.doczj.com/doc/231661135.html,/air/?loc=cn。 将看到如图 2.4 所示的网页界面。
图 2.4
AIR 安装程序下载界面
可以看到我们选择的是中文版本的安装程序(如果读者的操作系统是其他语种的,当然也 可以下载其他语言版本的 AIR 安装程序), 注意下载的版本是否与自己的操作系统相匹配。 1.1 版的大小是 12MB,如果是宽带上网的话,下载起来应该很快……或许读者已经等不及了, 马上单击“立即下载”按钮吧。 下载完成之后,找到下载的文件,应该如图 2.5 所示。 双击这个安装文件(AdobeAIRInstaller.exe),将执行安装进程。如果读者的操作系统是中 文的,将看到如图 2.6 所示的中文界面。
图 2.5
AIR 安装程序
图 2.6
AIR 的安装界面
[
17
]

Adobe AIR 完整入门与开发实录 使用 Flex\Flash\Ajax 开发 AIR 应用
单击“我同意”按钮,并进入下一步的安装界面,完成安装操作。至此 AIR 运行时已经 安装完成了,你会发现你的操作系统并没有什么变化,别急,AIR 运行时是个应用于底层的 服务,从表面是看不到的(当然你可以进入“控制面板”,从“添加和删除程序”中找到 AIR 的安装记录)。 现在可以安装一些优秀的 AIR 实例程序,来体验 AIR 带来的炫目的应用。访问下面的地 址:https://www.doczj.com/doc/231661135.html,/cn/products/air/showcase/。可以看到很多优秀的 AIR 示例, 包括 AOL、NASDAQ、EBay 等,都使用 AIR 来构建优秀的体验。如果感兴趣的话,可以将这 些示例一一安装,慢慢地品味。 这里要特别介绍的是 Adobe 自己基于 AIR 技术制作的一款富媒体播放器:Adobe Media Player。可以从下面的地址访问并安装:https://www.doczj.com/doc/231661135.html,/products/mediaplayer/。这 是一款功能很强大的播放器,主要用于播放在线流媒体视频,也可以播放本地的视频文件, 支持 FLV 和 H.264 格式。而且你会发现安装也很方便,Adobe 为我们提供了在线安装 Adobe Media Player 的方式,这种方式是基于 Badge 技术的,稍后我们会介绍这个部分。安装完成 Adobe Media Player 之后,会看到如图 2.7 所示的界面。
图 2.7
Adobe Media Player 界面
赶快体验一下吧。在稍后的章节中,你也将学会如何制作这些炫目的应用。
2.5
分发/安装/运行 AIR 应用程序
本节我们将详细讲述如何下载并安装一个 AIR 应用,以及如何使用 AIR Installer Badge 部署在线安装。 我们来简单分析一下 Adobe 提供的两种方式。
[
18
]

第 2 章 Adobe AIR
Adobe AIR
桌面分发:即通过把开发者的 AIR 安装包(.air 文件)发给用户安装,但如果用户没有 安装 AIR 的运行时,就无法安装,当然可以再发给用户一个 AIR 运行时的安装包, 写个说明让用户先安装 AIR 运行时,再安装应用,问题是这种繁琐的操作是极其有 损于用户体验的。推荐使用 Web 部署安装的方式。 Web 部署安装的机制(即 AIR Install Badge): 在网络普及率很高的情况下这样的方式 无疑是很好的,在部署(包括跨平台)和版本控制上都很方便。
2.5.1 下载和安装 AIR 应用
AIR 应用程序安装文件都是以.air 为后缀名的文件,它的图标看起来应该如图 2.8 所示。 我们就以这个 Dict.air 为例,来讲述如何用常规的方式来分发和安装这个应用。 实际上,可以认为这就是一个可执行文件(类似于 EXE),可以通过多种方式来分发,比 如上载到网络服务器供下载,在线传送,移动拷贝等。只要用户将这个安装文件复制到了自 己的电脑上,那么就可以用双击的方式来打开文件并执行安装过程(前提当然是要先安装了 AIR 运行时)。假设读者下载了 Dict.air 文件到桌面,那么双击之后,就会看到如图 2.9 所示的 安装界面。
图 2.8
典型的 AIR 应用程序安装文件
图 2.9
典型的 AIR 应用程序安装界面
只需单击“安装”按钮,稍作配置(比如安装目录),就可以完成安装并使用了,这个过 程是非常便捷的。 这种方式的缺点就是用户必须下载文件,手动安装。那么有没有更方便的方式?有的, 下面将介绍如何使用 AIR Installer Badge 部署在线安装。
提示:细心的读者也许会发现,安装界面的发行商部分写的是“未知”,这就涉及到一个数 字证书的问题,因此后面将为读者简单介绍数字证书的概念。
在这里引入另外一个问题,或许会有读者有这样的疑问:假如用户的系统中没有安装运 行时,而又不能通过网络安装,该如何安装 AIR 应用呢。当然可以用桌面分发的方式,再发 给用户一个 AIR 运行时的安装包,写个说明让用户先安装 AIR 运行时,再安装你的应用。这
[
19
]

Adobe AIR 完整入门与开发实录 使用 Flex\Flash\Ajax 开发 AIR 应用
里给读者的建议是,在当今网络普及率非常高的情况下,这样的情况不会太多,如果你真的 有这方面的需求,建议使用打包工具将你的应用安装包和 AIR 运行时的安装包捆绑在一起。 打包的过程并非本书的讨论范畴,所以不在这里阐述了,如果读者对这方面感兴趣,可 以参阅关于桌面部署 AIR 应用的一些探讨(https://www.doczj.com/doc/231661135.html,/node/141)。
2.5.2 使用 AIR Installer Badge 部署在线安装
AIR Installer Badge 是一个基于 JavaScript 和 Flash Player 的工具包,它可以实现在线部 署/安装 AIR 应用。下载地址:https://www.doczj.com/doc/231661135.html,/wiki/index.php/AIR_Badge。 如果用户没有安装 Flash Player,那么将会提供连接到 Adobe Flash Player 下载中心的链 接,用户需要安装了 Flash Player 才能使用 AIR Installer Badge 提供的功能。 如果用户安装的 Flash Player 版本过低,则会提示用户升级 Flash Player。 如果用户没有安装 AIR Runtime,则会先安装 AIR Runtime。 如果用户已经安装了 AIR Runtime,则只会安装 AIR 应用程序。 支持自定义文字显示。 使用 AIR Installer Badge 也是很方便的。下载安装包 air_badge_022508.zip,并解压到本 地,会看到如图 2.10 所示的文件结构。
图 2.10
AIR Installer Badge 的文件结构
其中的 swfobject.js 可能很多读者都很熟悉了,AIR Installer Badge 显然也使用了这个 JS 工具包。对我们而言,只需要知道 AIR Installer Badge 在 HTML 中如何使用即可。现在打开 EmbedDemo.html 这个文件,查看源文件,使用方法就一目了然了。 主要代码:
var so = new SWFObject("AIRInstallBadge.swf", "Badge", "215", "180", "9.0.115", "#FFFFFF"); https://www.doczj.com/doc/231661135.html,eExpressInstall('expressinstall.swf'); // these parameters are required for badge install: so.addVariable("airversion", "1.0"); // version of AIR runtime required so.addVariable("appname", "My Application"); // application name to display to the user so.addVariable("appurl", "https://www.doczj.com/doc/231661135.html,/sampleApp.air"); // absolute URL (beginning with http or https) of the application ".air" file
[
20
]

第 2 章 Adobe AIR
// these parameters are required to support launching apps from the badge //(but optional for install): so.addVariable("appid", "MyApplication"); // the qualified application ID (ex. com.gskinner.air.MyApplication) so.addVariable("pubid", ""); // publisher id
Adobe AIR
// this parameter is required in addition to the above to support upgrading // from the badge: so.addVariable("appversion", "1.0.2"); // AIR application version // these parameters are optional: so.addVariable("imageurl", "demoImage.jpg"); // URL for an image (JPG, PNG, GIF) // or SWF to display in the badge (205px wide, 170px high) so.addVariable("appinstallarg", "installed from web"); // passed to the application when it is installed from the badge so.addVariable("applauncharg", "launched from web"); // passed to the application when it is launched from the badge so.addVariable("helpurl", "help.html"); // optional url to a page containing // additional help, displayed in the badge's help screen so.addVariable("hidehelp", "false"); // hides the help icon if "true" so.addVariable("skiptransition", "false"); // skips the initial transition if "true" so.addVariable("titlecolor", "#00AAFF"); // changes the color of titles so.addVariable("buttonlabelcolor", "#00AAFF"); // changes the color of the button label so.addVariable("appnamecolor", "#00AAFF"); // changes the color of the application // name if the image is not specified or loaded // these parameters allow you to override the default text in the badge: // supported strings: str_error, str_err_params, str_err_airunavailable, // str_err_airswf, str_loading, str_install, str_launch, str_upgrade, str_close, // str_launching, str_launchingtext, str_installing, str_installingtext, // str_tryagain, str_beta3, str_beta3text, str_help, str_helptext so.addVariable("str_err_airswf", "Running locally?

The AIR proxy swf won't load properly when this demo is run from the local file system."); // overrides the error text when the AIR proxy swf fails to load so.write("flashcontent");
我们需要做的,就是把这段代码复制到自己的 HTML 中,修改对应的参数,并且保证文 件的引用地址是正确的,AIR Installer Badge 就可以开始工作了。如图 2.11 所示是默认的安 装界面,当然读者可以通过修改源文件来制作个性化的安装界面。
图 2.11
AIR Installer Badge 的安装界面
[
21
]

Adobe AIR 完整入门与开发实录 使用 Flex\Flash\Ajax 开发 AIR 应用
下面将会对 AIR Installer Badge 的工作原理做详细的剖析。 对于读者来说, 掌握上述部分 已经可以在线部署一个 AIR 应用,可以跳过这个部分,直接进入后面的内容;如果对个性化 安装过程很感兴趣,请仔细阅读这个部分。 打开 AIRInstallBadge.fla 文件,会看到一个时间轴动画,不错,这就是 Badge 安装界面 的动画效果,其中有一些代码,是用于产生噪点滤镜的,这也就说明了安装界面的模拟电视 机雪花屏幕的效果是怎样产生的。如果你不需要这段动画,或不需要这种特效,修改这里, 就可以实现自定义的效果。可以请动画师制作一段动画放在这里,看起来或许非常酷。 打开 AIRInstallBadge.as,会发现这就是安装界面的逻辑部分,如果读者有 AS3 的基础, 这些代码并不难理解。几个需要注意的地方在这里列出来:
public static const AIR_SWF_URL:String = "https://www.doczj.com/doc/231661135.html,/air/browserapi/air.swf"; //AIR API 的位置 var params:Object = loaderInfo.parameters; //这一句接收从 JavaScript 中传递过来的参数 var imageLoader:Loader = new Loader(); //用于载入显示图像 airSWFLoader = new Loader(); //用于载入 AIR API 的 SWF 文件 protected function handleActionClick(evt:MouseEvent):void { if (action == "close") { hideDialog(); enableAction(prevAction); } else if(action == "install"||action=="upgrade"||action=="tryagain") { showDialog(getText("installing"),getText("installingtext")); disableAction(); // check if it's installed every 5 seconds: timer.reset(); timer.start(); airSWF.installApplication(appURL, airVersion, appInstallArg); } else if (action == "launch") { https://www.doczj.com/doc/231661135.html,unchApplication(appID, pubID, appLaunchArg); showDialog(getText("launching"),getText("launchingtext")); enableAction("close"); } } //这个方法用于安装 AIR 应用
注意:https://www.doczj.com/doc/231661135.html,/air/browserapi/air.swf 是 Adobe 提供的 AIR 的 API 文件, 也就是说 API 被集成到这个 SWF 文件中。它有一个方法叫做 getStatus(),使用这个方法可 以判断用户是否安装了 AIR 运行时,这个方法非常有用,可以使用这个方法在用户没有安 装 AIR 运行时的时候做一些逻辑控制。 另外需要注意的就是 appURL 必须是一个完整的 URL 地址,比如 https://www.doczj.com/doc/231661135.html,/desktop.air。如果没有将地址书写完整,哪怕相对路径是 正确的,也会造成安装失败。
2.5.3 数字证书
如果读者是一个 Web 开发人员,或许对数字证书的概念会很陌生。通俗点来说,数字证 书就好比是人的身份证,用于证明一个软件的身份(包括开发商是谁、发布时间等)。如果微
[
22
]

第 2 章 Adobe AIR
Adobe AIR
软开发了一个软件,并使用数字证书技术予以签名,那么所有的安装用户都知道这是微软的 产品,可以放心安装,否则,对于一个来源未明的软件,作为用户的你是否会放心安装呢。 数字证书对于软件开发商和用户来说都是一种保护。AIR 也支持数字证书签名,所以你 可以通过签名的方式让用户放心地安装。数字证书的详细制作过程不属于本书的讨论范畴, 读者所需要知道的是以下两点。
1. AIR 数字签名是强制要求
数字签名对 AIR 是必需的。用可信的证书对 AIR 应用程序进行签名后,AIR 会在安装期 间显示发行商名称。否则,发行商名称将显示为“未知”。 对 AIR 文件进行签名后,安装文件中将包含一个数字签名。此签名包括程序包的摘要, 用于证实 AIR 文件自签名以来未经修改;此签名还包括有关签名证书的信息,用于证实发行 商身份。详细信息请参阅:https://www.doczj.com/doc/231661135.html,/zh_CN/AIR/1.5/devappsflash/WS5b3ccc 516d4fbf351e63e3d118666ade46-7ff0.html。
2. 开发阶段生成自签名证书
如果只是开发并调试,可以通过自签名的方式来赋予 AIR 应用数字证书,当然这样做的 意义只是为了完成开发和调试工作,在用户安装的时候这种签名是没有效力的。至于如何自 签名,在后面章节的开发过程中会有所介绍。
2.6
AIR 的开发调试环境与设置
本节我们将详细讲述如何配置 AIR 的开发和调试环境。首先要选择你是哪种类型的开发 者,是基于 HTML/Ajax,还是基于 Flash 的开发者,这样才能有针对性地选择开发工具和配 置开发环境。在前面的章节中我们已经了解到,AIR 支持两种技术类型的开发(基于 Flash Player 的开发和基于 HTML+Ajax 的开发),这得益于 AIR 中内嵌的 Flash Player 和 WebKit 浏 览器引擎。 如果你是 HTML 和 Ajax 开发者,可以选择自己熟悉的开发工具(比如 Aptana)来开发 AIR 应用。 如果你是 Flash/Flex 开发者,可以选择 Flash CS4 或 Flex Builder 来创建 AIR 应用。 调试部分依赖于 IDE,当然也可以使用第三方的调试工具来进行调试工作,比如使用 De MonsterDebugger。这是一款由 De Monsters 工作室基于 Flex/AIR 技术开发的代码调试器。 这个调试工具开源免费,可以用这个调试器来调试基于 Flash/Flex/AIR 的应用程序。
2.6.1 HTML/Ajax 开发者
全新的 Adobe AIR 运行时使 Ajax 开发人员能够构建可在桌面上部署的富互联网应用程序 (RIA)。 AIR 应用程序可在 WebKit HTML 引擎上跨操作系统运行, 并可通过使用单个安装程序
[
23
]

Adobe AIR 完整入门与开发实录 使用 Flex\Flash\Ajax 开发 AIR 应用
文件轻松交付。借助于 Adobe AIR,Ajax 开发人员可以使用现有的技能和代码构建响应快速、 极具吸引力的应用程序, 这些应用程序将本地资源的强大功能与 Web 的触及力结合到一起。 对于使用 Ajax 的开发人员来说,Adobe AIR 的益处包括: 使用现有的代码,加上 Adobe Dreamweaver、Aptana 或其他 IDE,以及通用的 Ajax 框架,将应用程序交付到桌面以补充和扩展开发者的浏览器应用程序。 利用 Adobe AIR 的桌面功能,为用户构建响应更快、更加引人入胜、更有价值的应 用程序。 Ajax 构建的 AIR 应用程序使用开放源码的、跨操作系统的 WebKit 引擎,因此可以 在桌面上交付与在浏览器中相同的代码。 由于 Adobe AIR 应用程序使用经过验证的、开放的技术,包括 WebKit、SQLite 和 ECMAScript,这样就可以对它们的可靠性和稳定性感到有信心。 也就是说,可以使用现有的 HTML/Ajax 开发工具来开发 AIR 应用,唯一和以前的开发流 程不一致的是需要使用 AIR 的开发工具包(AIR SDK)。 AIR SDK 的获取地址是 https://www.doczj.com/doc/231661135.html,/cn/products/air/tools/sdk/。 Adobe AIR SDK 提供构建和部署 AIR 应用程序所必需的工具,包括: application.xml 清单文件的模式和模板。 Adobe AIR 应用程序的默认图标。 Adobe AIR API 的框架。 Adobe AIR 应用程序安装徽章的模板。 命令行 Adobe AIR Debug Launcher。 命令行 Adobe AIR Developer Tool。 假如使用的是 Dreamweaver,那么就可以使用适用于 Dreamweaver 的 Adobe AIR 扩展。 适用于 Dreamweaver 的 Adobe AIR 扩展将允许直接在 Adobe Dreamweaver CS3 内打包和预 览 AIR 应用程序文件,因此可以利用现有的 Web 开发技能在桌面上构建富互联网应用程序。 适用于 Dreamweaver 的 Adobe AIR 扩展是以 MXP 的格式提供的, 并可以使用 Adobe Extension Manager(它是随 Dreamweaver 一起安装的)进行安装。 重要信息——请在安装之前 使用 Extension Manager 删除该扩展的任何先前安装版本。 安装可以使用以下两种方法之一: 双击 MXP 文件启动 Extension Manager 并直接安装该扩展。 在 Extension Manager 应用程序中选择“文件”→“安装扩展”菜单命令, 然后选择 已下载的 MXP 文件进行安装。 下载地址:
https://www.doczj.com/doc/231661135.html,/pub/air/extensions/dreamweaver/Adobe_AIR.mxp
安装完成之后,打开 Dreamweaver,如果可以在菜单中找到如图 2.12 所示的命令,就说 明已经配置成功了。
[
24
]

第 2 章 Adobe AIR
Adobe AIR
图 2.12
Dreamweaver 中的 AIR 菜单命令
2.6.2 Flash/Flex 开发者
如果读者是一个 Flash/Flex 开发者,那么你使用的工具可能是 Flash CS、Flex Builder (Eclipse),或其他第三方的 Flash IDE。其实归根结底,它们都是在使用 AIR 的 SDK,不过如 果你使用 Flash CS 或 Flex Builder 的话,在开发环境的配置上会比其他第三方的 IDE 要简单 一些。实际上,如果你使用 Flex Builder3,无需任何配置就可以开发 AIR 应用,因为它已经 集成了 AIR 的 SDK。 Flex Builder3 是一个基于 IDE 的 Eclipse, 它包括 Flex3 SDK 和 Adobe AIR SDK 中的工具, 可以从下面的地址获取:
https://www.doczj.com/doc/231661135.html,/cfusion/entitlement/index.cfm?e=flex3email
直接安装就可以开发 AIR 应用。 如果你使用 Flash CS3,也可以很方便地通过安装扩展来使 Flash CS3 支持 AIR 开发。只 需安装一个 Flash CS3 Professional 的 Adobe AIR 更新。更新的下载地址为:
https://www.doczj.com/doc/231661135.html,/support/flash/downloads.html
该更新将允许你从 Adobe Flash CS3 Professional 软件内打包和预览 AIR 应用程序文件。
注意:要下载 Adobe AIR 1.1 Update for Flash CS3 Professional,需要安装早些时候 Adobe 推 出的一个 AIR 针对 Flash CS3 的扩展。在上述地址就可以找到旧版的安装地址,按照提示安 装即可。
安装 Flash CS3 Professional 的 Adobe Air 1.1 更新的步骤如下。 (1) 从 https://www.doczj.com/doc/231661135.html,/go/getaikwin 或 https://www.doczj.com/doc/231661135.html,/go/getaikmac 下载 AIRSDKIntegrationKit。 (2) 找到名为 AIK 的文件夹。在 Windows 中为 C:/Program Files/Adobe/Adobe Flash CS3;在 Mac OS X 中为 Macintosh HD: Applications: Adobe Flash CS3。
[
25
]

Adobe AIR 完整入门与开发实录 使用 Flex\Flash\Ajax 开发 AIR 应用
(3) 删除 AIK 文件夹中的所有文件。不要删除此文件夹。 (4) 对 AIRSDKIntegrationKit 的内容进行解压缩并将这些内容放入 AIK 文件夹中。 (5) 从 https://www.doczj.com/doc/231661135.html,/air/下载 Adobe AIR 1.1 Runtime。 (6) 将此运行时安装到计算机上。
注意:如果你使用的是 Flash CS4,那么无需任何配置就可以开发 AIR 应用。Flash CS4 已经 内含了 AIR 的 SDK,可以直接用它来创建基于 AIR 运行的文件。
提示:在后续章节中,将详细介绍如何使用 Flash CS4 的开发环境来开发 AIR 应用。请参考 第 4 部分“使用 Flash CS4 开发 AIR 应用”。
2.7
AIR 的文件结构
本节将分析一下 AIR 安装文件的组成结构,这有助于我们对 AIR 的理解和此后开发过程 之中的参数调整。 本章需要着重学习的是 AIR 的应用配置文件,它是一个标准的 XML 配置文件,可以用任 何文本编辑工具打开和编辑,修改其中相应的属性,即可使 AIR 应用表现出不同的特性。如 果你使用 Flash CS 来开发 AIR 应用的话,IDE 已经集成了一个属性编辑器,需要注意的是这 个编辑器其实就是在修改 AIR 应用配置的 XML 文件, 只不过 IDE 用可视化的形式给开发者展 现出来,编辑起来更方便一些。目前 Flex Builder 中暂时还不支持可视化修改 AIR 配置。 AIR 应用的安装目录默认与操作系统的应用安装目录保持一致(比如 Windows 下的 C:\ Program Files),当然用户在安装的过程中是可以自定义安装路径的。
2.7.1 解析 AIR 安装包
AIR 安装文件是一种以.air 为后缀名的文件格式,实际上它是一个 ZIP 压缩包。我们可以 用 WinZip 或 WinRAR 打开它,看到里面的文件结构。当然配置不同,开发环境不同,目录 结构也会有所区别。如图 2.13 所示是一个典型的 AIR 安装程序的目录结构。
图 2.13
AIR 安装文件的内部结构
其中: AppIconsForAIRPublish 目录中存放的是程序的图标文件, 当然可以不使用这个目录 名,可以在配置文件中自己定义文件路径,在稍后的配置文件部分我们会介绍到。
[
26
]

第 2 章 Adobe AIR
Adobe AIR
META-INF 目录存放着程序的配置文件,包括后面我们要讲到的 application.xml。 Fly.swf 是程序的主文件, 当然如果用 HTML/Ajax 方式开发的话, 主文件或许是 HTML 格式的。这个文件的名称也不是定死的,可以通过修改配置文件来修改。 Mimetype 是个描述文件,定义了这个文件的类型是个 ZIP 压缩包。
2.7.2 了解配置文件
AIR 应用程序都是有一些设置的,包括版本号、窗口是否透明、图标文件地址等,这些 设置都存在于配置文件中。配置文件一般可以在 META-INF 目录中找到,文件名称是 application.xml(这个名称也不是必需的,可以用其他的名称)。 让我们打开一个典型的配置文件,看看里面的结构(为了便于理解,这里我们特地为配置 文件加了一些注释):
MZDown MZDown MZDown v1 MZDown.swf none true true
[
27
]

Adobe AIR 完整入门与开发实录 使用 Flex\Flash\Ajax 开发 AIR 应用
800 600
[
28
]

第 2 章 Adobe AIR
Adobe AIR
对一些常用的、必须的设置,读者应该多注意一下,可以避免在以后犯不必要的错误。
2.7.3 AIR 的安装目录
AIR 应用程序可以在配置文件中指定程序的安装目录(默认一般是 C:\Program Files\这样 的路径),在安装的时候用户也可以自己选择安装位置,如图 2.14 所示。
图 2.14
自定义程序安装位置
让我们来看一下 Adobe Media Player 的安装目录下有什么(见图 2.15)。
图 2.15
典型的应用程序安装目录
其实与我们先前 AIR 安装包中的结构差异不大,基本上沿袭了原先的文件结构,有一个 主文件和一些配置文件。当然在此后的开发中,你也可以设置这个地方为存储路径,用于存 储文件或数据库之类的,视具体需要而定。
[
29
]

相关主题
文本预览
相关文档 最新文档