Adobe AIR SDK和Flex SDK的关系



我正在努力理解Flash平台的整体混乱(主要是为了理解其中的术语),但到目前为止,我还无法弄清楚AIR和Flex SDK到底是如何关联的。如果没有真正看过SDK,我的理解是AIR使您能够开发Flash(即ActionScript,显然还有JavaScript/HTML)应用程序,这些应用程序可以由AIR运行时运行,而无需浏览器(例如纯桌面或智能手机应用程序)。Flex SDK似乎是一个类和附加API的集合(类似于JavaFX?),用于扩展"标准"Flash库。

现在,我已经下载了这两个SDK的最新版本,显然,事情并没有那么简单。所以,首先我看了AIRSDK(http://www.adobe.com/devnet/air/air-sdk-download.html,截至目前的v3.4)。据我所知,"adt"实用程序是AIR的主要部分,它可以让您打包完成的应用程序。然而,我不确定AIRSDK是否真的包括编译器——比如你有一堆ActionScript.as文件,并想使用AIRSDK将它们转换为.swf或.AIR文件,这可能吗?

Flex SDK(http://www.adobe.com/devnet/flex/flex-sdk-download.html,截至目前的4.6版)不幸的是,这无助于解决混乱。它确实包括编译器和其他工具,但在它的"bin"文件夹中,我也可以找到"adt"one_answers"adl"——AIR工具!此外,它还有"AIRSDK license.pdf"one_answers"AIRSDK readme.txt"文件;从这些来看,Flex SDK似乎包含了AIR-SDK版本2的一些旧版本。

更令人困惑的是,我还在Adobe的网站上发现了"Flex和AIR®SDK的组合版本(Flex SDK 4.6.0.23201和AIR 3.4.0.2540 SDK)"(http://gaming.adobe.com/getstarted/)。这似乎不仅仅是通过将AIR3.4文件复制到Flex4.6文件中,向列表中添加另一个项目来创建的。

所以,本质上,我想知道这两个(三个?)SDK之间的区别。我需要Flex实用程序进行编译吗?为什么"纯"Flex SDK包含AIR的部分(?)?我可以将AIR SDK的任何版本复制到Flex SDK中,以便与FlashDevelop一起使用吗?

I haven't been able to figure out how exactly the AIR and Flex SDKs are related.

从封装的角度来看,它们没有任何关联。然而,Adobe确实发布了AIRSDK及其Flex SDK版本。

当使用IDE(如Flash Builder)时,需要特定的目录结构,其中包括Flex SDK子目录中的AIR-SDK。

在使用Apache Flex时,Apache没有分发AIR SDK的权利,因此用户可以将AIR SDK和Flex SDK结合起来,使其易于与Flash Builder一起使用。然而,ApacheFlex人员正在开发一个"易于安装"的工具来准备ApacheFlex SDK,以便与FlashBuilder一起使用。该工具下载所有相关的非Apache二进制文件,并为您提供一个完整的包。

在没有AIR的情况下使用Flex UI框架是完全有效的;以及在没有Flex的情况下使用AIRSDK。然而,在Flex SDK中,特别是在移动组件集中,我相信AIRSDK有一些依赖关系。要使用AIR,您需要一些东西来编译它。Flex SDK中的MXMLC是一种选择。

我将尝试回答您的一些具体问题:

我的理解是AIR使您能够开发Flash(即ActionScript,显然还有JavaScript/HTML)应用程序其可以由AIR运行时运行而不需要浏览器(例如作为纯桌面或智能手机应用程序)。

这是真的;只是我不相信AIR像在桌面上那样支持HTML/JS智能手机。Mobile AIR Runtime不像桌面版那样包含嵌入式浏览器。但是,您可以使用StageWebView使用设备上的浏览器。

Flex SDK似乎是类和附加API的集合…扩展"标准"闪存库。

这是正确的。Flex框架提供了许多UI组件类,此外还有一个用于构建自己的UI类的框架。需要明确的是,Flex SDK不仅仅包括Flex框架,还包括调试程序和命令行编译器。

Flex SDK似乎包含了一些旧版本的AIRSDK

这是真的;Flex SDK包括AIR SDK的一个版本。Flex和AIR不在同一更新时间表上;所以Flex只有在新的Flex发布时才会更新到最新版本的AIR。如果你需要,有一些方法可以将新的Air SDK覆盖到Flex SDK上。以下是一些说明。我忘记了Adobe Flex 4.6中包含的AIR版本,但我认为它是AIR3.2。AIR 3.4是Adobe的最新版本。

值得注意的是,Flex已捐赠给Apache基金会;他们已经发布了Apache Flex 4.8。

我需要Flex实用程序来编译吗?

我不完全清楚这个问题的答案。大多数人使用Flex SDK中的MXMLC来编译基于AIR的应用程序。即使您使用Flash Builder,MXMLC也是在后台使用的。如果你使用Flash Professional,我相信它有自己的AIR编译器,但我不知道它是否基于MXMLC。FlashBuilder4.7将包含一个全新的编译器——代号Falcon。

我可以将AIR SDK的任何版本复制到Flex SDK中使用吗两者都有,例如FlashDevelop?

理论上是的。我对FlashDevelop一无所知,但我知道它支持Flex。我认为,通过扩展,它也支持AIR。

我会尽量简化它。Flex SDK和AIR SDK的划分是由于Adobe开发团队的工作方式,主要是因为不同的发布周期。AIR SDK与Flex SDK有不同的时间表,从今天起,Flex SDK不再由Adobe开发。我认为可以肯定地说,它们的包装/分发方式没有其他原因——我多年来都没有找到它,所以,即使有,它也不明显或不重要。

Flex SDK通常包含过时版本的AIR SDK,因此您需要在Flex SDK上复制AIR SDK,以获得最新的环境。如果你能处理好两个部分运行所需的设置,你可能不会复制任何东西(实际上没有那么多)。然而,AIRSDK还不足以进行开发。Flex SDK就足够了,但不会包含一些与AIR有关的部分(还有更多的SDK,然后是这两个,但为了简单起见,我们在这里不提它们)。

我会尝试列出以下内容和寻找它们的地方,我不确定这个系统是否连贯,但看起来这是我能做的最好的:

Flex SDK

  • ABC(ActionScript)编译器、SWF(transcoder、linker等)。编译器、SWC(库)打包程序、文档生成器、反汇编程序、调试器等实用程序
  • 初步的AIR支持,主要涉及桌面、打包程序和启动器(基本上是调试器)
  • 运行时(浏览器的各种播放器、独立播放器、AIR播放器)
  • 库来链接不同运行时的代码(类似于C中的头)
  • Ant任务用于运行一些实用程序,主要是编译器和链接器,但它们也有其他一些东西,比如HTML模板生成等
  • SDK来源
  • Flex框架(一个质量可疑的大型GUI库,用于设计企业风格的应用程序——表单、空白、图表等等)

AIR SDK

  • AIR、APK的打包程序和启动器以及iOS应用程序格式是什么
  • 它包含运行时、模拟器(主要是用于Android模拟器的avd+一些用于adb等的实用程序,但可能也适用于iOS)
  • 运行时的库(头)
  • 一点Flex框架(如上所述),特别针对台式机/移动设备
  • 与安装程序/更新程序相关的内容
  • 相关消息来源

最重要的是,Adobe向Apache捐赠了Flex SDK,最新发布的版本是4.8(由Apache发布)。你可能会发现使用Apache版本更复杂,因为它需要你做更多的配置,并从Adobe下载一些比特,它们不允许在Apache许可证下重新分发。

我没有足够的声誉来对此发表评论,但参考wxvw的回答,Apache Flex一键安装程序已经发布,可以在这里获得:

http://flex.apache.org/installer.html

它目前安装Flex 4.9和所有必需的(以及各种可选的)依赖项。