Adobe AIR SDK和Flex SDK之间的关系是什么?

13
我正在尝试理解整个Flash平台的混乱(主要是为了理解被抛来的术语),到目前为止,我还没有弄清楚AIR和Flex SDK之间的确切关系。没有实际查看SDK,我的理解是AIR可以让您开发Flash(即ActionScript,以及显然还有JavaScript/HTML)应用程序,这些应用程序可以在AIR运行时中运行,无需浏览器(例如纯桌面或智能手机应用程序)。Flex SDK似乎是一个类和附加API的集合(类似于JavaFX?),用于扩展“标准”Flash库。
现在,我已经下载了两个SDK的最新版本,显然事情并不那么简单。因此,首先我查看了AIR SDK(http://www.adobe.com/devnet/air/air-sdk-download.html,截至目前为止v3.4)。据我所知,“adt”实用程序是AIR的主要部分,它可以让您打包完成的应用程序。但是,我不确定AIR SDK是否实际上包括编译器-假设您有一堆ActionScript .as文件,并希望使用AIR SDK将它们转换为.swf或.air文件,是否可能?
Flex SDK(http://www.adobe.com/devnet/flex/flex-sdk-download.html,目前版本为4.6)很遗憾并没有解决混淆的问题。它包括编译器和其他工具,但在其“bin”文件夹中,我也可以找到“AIR”工具“adt”和“adl”!更重要的是,它还有“AIR SDK license.pdf”和“AIR SDK 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/)。看起来这不仅仅是通过将AIR 3.4文件复制到Flex 4.6文件中创建的,这又增加了另一个项目。
因此,我想知道这两个(三个?)SDK之间的区别。我是否需要Flex实用程序进行编译?为什么“纯”Flex SDK包括AIR的部分(?)?我是否可以将任何版本的AIR SDK复制到Flex SDK中,并与例如FlashDevelop一起使用?
3个回答

19
I haven't been able to figure out how exactly the AIR and Flex SDKs are related.
从封装的角度来看,它们没有任何关系。然而,Adobe会将AIR SDK与他们的Flex SDK版本一起分发。
使用IDE(如Flash Builder)时,需要特定的目录结构,其中包括Flex SDK子目录中的AIR SDK。
在使用Apache Flex时,Apache没有权利分发AIR SDK,因此用户需要将AIR SDK和Flex SDK组合在一起,以便轻松地将SDK与Flash Builder一起使用。不过,Apache Flex的人正在开发一个“易安装”工具,以准备Apache Flex SDK与Flash Builder一起使用。该工具会下载所有相关的非Apache二进制文件,并为您提供一个完成的软件包。
在不使用AIR的情况下使用Flex UI Framework是完全有效的;同样,在不使用Flex的情况下使用AIR SDK也是可以的。然而,在Flex SDK中,特别是在移动组件集中,我相信有一些依赖于AIR SDK。要使用AIR,则需要某种编译器。来自Flex SDK的MXMLC是一个选项。
我将尝试回答您的一些具体问题:
我理解的是,AIR使您能够开发Flash(即ActionScript,以及显然还包括JavaScript / HTML)应用程序,这些应用程序可以在AIR运行时中运行,而无需浏览器(例如纯桌面或智能手机应用程序)。
这是正确的,但我不认为AIR在智能手机上像在桌面上那样支持HTML / JS。移动AIR Runtime不包括嵌入式浏览器,就像桌面版一样。但是,您可以使用StageWebView使用设备上的浏览器。
Flex SDK似乎是一组类和其他API的集合...以扩展“标准”Flash库。
这是正确的。Flex框架提供了许多UI组件类,以及构建自己的UI类的框架。需要明确的是,Flex SDK包括不止Flex Framework,还包括逐步调试器和命令行编译器。
看起来Flex SDK包含一些较旧版本的AIR SDK。
这是真的;Flex SDK 包含了 AIR SDK 的一个版本。Flex 和 AIR 的更新计划不同,因此当新的 Flex 版本发布时,Flex 只会随最新版本的 AIR 一起更新。如果需要,可以将新的 Air SDK 覆盖到 Flex SDK 上。这里有一些说明。我忘记 Adobe Flex 4.6 中包含的 AIR 版本,但我认为它是 AIR 3.2。AIR 3.4 是 Adobe 最新的版本。
值得注意的是,Flex 已经被捐赠给 Apache Foundation;他们已经发布了 Apache Flex 4.8。

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

我对此并不完全清楚。大多数人使用Flex SDK中的MXMLC编译基于AIR的应用程序。即使您使用Flash Builder,MXMLC也是在幕后使用的。如果您使用Flash Professional,我认为它有自己的AIR编译器,但我不知道它是否基于MXMLC。Flash Builder 4.7将包括一个全新的编译器 - 代号Falcon。
“我能否只是将任何版本的AIR SDK复制到Flex SDK中,以便与例如FlashDevelop一起使用?”
理论上是可以的。我不知道FlashDevelop的任何信息,但我了解它支持Flex。我假设,通过扩展,它也支持AIR。

下载FlashDevelop,它会为您下载重要的内容。不过Adobe即将放弃使用Flex进行编译,请查看Actionscript编译器(ASC),这将很快成为常态。Flex SDK已经捐赠给Apache,不再是Adobe的一部分。AIR仅用于桌面/移动等相关应用程序。 - xLite
@xLite 我不确定说Adobe正在放弃使用Flex进行编译的说法有多准确。他们已经创建了一个新的编译器(代号Falcon),它包含在Flash Builder 4.7中,并且该编译器已经被捐赠给Apache Flex项目。 - JeffryHouser
目前来看,只要不使用Flex框架,AIR SDK就足以完全支持开发AIR应用程序。AIR SDK包括了大大改进的ASC 2.0编译器(ActionScript 3编译器版本2.0)。 - Gene Pavlovsky
1
@GenePavlovsky,你提到的ASC 2.0编译器就是我之前提到的Falcon编译器。我知道Apache Flex团队已经做了一些工作,使得“Falcon”可以用于Flex项目和MXML;但我不确定是否已经完成了这项工作。现在AIR Dev可以完全独立于Flex Framework。 - JeffryHouser
@JeffryHouser 我明白了,不知道代号。AIR SDK 可能会与 Flex SDK 合并,允许开发混合 AIR/Flex 应用程序,同时使用 ASC 2.0 编译器。Adobe 解释了这个过程: https://helpx.adobe.com/x-productkb/multi/how-overlay-air-sdk-flex-sdk.html。虽然,在另一页上他们说,并不保证任何版本的 AIR 和 Flex SDK 兼容。 - Gene Pavlovsky
显示剩余6条评论

3
我会尝试让它更简单易懂。将Flex SDK和AIR SDK分开是由于Adobe开发团队的工作方式,主要是因为发布周期不同。AIR SDK与Flex SDK有不同的计划,而到今天为止,Adobe已经不再开发Flex SDK。我认为可以安全地说,他们打包/分发的方式没有其他原因-在过去的许多年中,我未能找到它,即使有一个,也不明显或重要。
Flex SDK通常包含过时版本的AIR SDK,因此您需要复制AIR SDK并覆盖Flex SDK以获得最新的环境。如果您可以处理两个部分所需的设置(确实不那么多),则可能无需复制任何内容。但是,AIR SDK不足以进行开发。Flex SDK是足够的,但不会包含与AIR相关的某些位(甚至有更多的SDK,这两个只是为了简单起见,在此处不予提及)。
我将尝试列出下面的事物以及查找它们的地方,我不确定这个系统是否连贯,但看起来这是我所能做的最好的:
Flex SDK
•ABC(ActionScript)编译器,SWF(ranscoders、链接器等)编译器,SWC(库)打包器,如文档生成器、反汇编器、调试器等的实用程序。
•基本的AIR支持,主要涉及桌面、打包程序和启动程序(基本上是调试器)。
•运行时(各种浏览器、独立的播放器,AIR播放器等)。
•用于不同运行时链接您的代码的库(类似于C中的标题)。
•Ant任务,用于运行一些实用程序,主要是编译器和链接器,但它们还有其他一些东西,如HTML模板生成等。
•SDK源。
•Flex框架(一个大型GUI库,设计用于企业级应用程序-表单、空白、图表等)。
AIR SDK
•AIR、APK以及那个iOS应用程序格式的打包程序和启动程序...
•它包含运行时、仿真器(主要是针对Android仿真器的avd+一些用于通过adb等进行工作的实用程序,但可能也有类似的东西适用于iOS)。
•运行时的库(标题)。
•一些Flex框架(如上所述),特别是针对桌面/移动设备。
•与安装程序/更新器相关的内容。
•相关的源代码。
最重要的是,Adobe将Flex SDK捐赠给了Apache,并且最新版本发布的是4.8版(由Apache发布)。您可能会发现使用Apache版本更加复杂,因为它需要您进行更多的配置并从Adobe下载一些位,他们不允许在Apache许可证下再分发。

我只需要补充一点,Apache Flex有一个项目,旨在为Flex SDK在Flash Builder [或其他IDE]中的使用做准备,并且它使得获取可与Flash Builder一起使用的Apache Flex SDK版本变得“一键”轻松。它会自动下载相关的Adobe组件。它目前处于发布候选阶段,很快就会推出。 - JeffryHouser
嗯,不确定要接受哪个答案。我想我会选择www.Flextras.com的,但这个答案也非常有帮助,因为它真正澄清了SDK的不同部分以及哪些工具负责编译(确认了我的猜测,即它们设置方式混乱的实际上没有理由 - 理论上是独立的,但实际上并不是。恰好Flex包括编译器,而AIR则没有)。 - Socob
到目前为止,仅使用AIR SDK就足以完全开发AIR应用程序,只要它们不使用Flex框架。 AIR SDK包括大大改进的ASC 2.0编译器(ActionScript 3编译器版本2.0)。 - Gene Pavlovsky

1

我没有足够的声望来将此作为评论,但是关于wxvw的答案,Apache Flex一键安装程序已经发布,可以在这里下载:

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

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


默认情况下,Apache Flex 4.9.0 包括 AIR 3.4。 - Justin Mclean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接