Adobe AIR SDK 和 Flex SDK 的关系?

Posted

技术标签:

【中文标题】Adobe AIR SDK 和 Flex SDK 的关系?【英文标题】:Relationship of Adobe AIR SDK and Flex SDK? 【发布时间】:2012-09-15 06:54:48 【问题描述】:

我试图弄清 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,截至目前为 v4.6)并没有帮助解决混乱。它确实包括编译器和其他工具,但在它的“bin”文件夹中,我还可以找到“adt”和“adl”——AIR 工具!更重要的是,它还有“AIR SDK license.pdf”和“AIR SDK readme.txt”文件;从这些来看,Flex SDK 似乎包含一些旧版本的 AIR SDK 版本 2。

为了让事情变得更加混乱,我还在 Adob​​e 的网站 (http://gaming.adobe.com/getstarted/) 上找到了“Flex 和 AIR® SDK 的组合版本(Flex SDK 4.6.0.23201 和 AIR 3.4.0.2540 SDK)”。似乎这不仅仅是通过将 AIR 3.4 文件复制到 Flex 4.6 文件、将另一个项目添加到列表中来创建的。

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

【问题讨论】:

【参考方案1】:
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 框架是完全有效的;并在没有 Flex 的情况下使用 AIR SDK。但是,在 Flex SDK 中,特别是在移动组件集中,我相信对 AIR SDK 存在一些依赖关系。要使用 AIR,您需要一些东西来编译它。 Flex SDK 中的 MXMLC 是一种选择。

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

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

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

Flex SDK 似乎是类和其他 API 的集合 ...扩展“标准”Flash 库。

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

Flex SDK 似乎包含一些旧版本的 AIR 开发工具包

这是真的; Flex SDK 包含一个 AIR SDK 版本。 Flex 和 AIR 不在同一个更新时间表上;所以 Flex 只有在新的 Flex 版本发布时才会使用最新版本的 AIR 进行更新。如果您需要,有多种方法可以将新的 Air SDK 叠加到 Flex SDK 上。 Here are some instructions。我忘记了 Adob​​e Flex 4.6 中包含的 AIR 版本,但我认为它是 AIR 3.2。 AIR 3.4 是 Adob​​e 的最新版本。

值得注意的是,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 中以使用 两者都有,例如Flash 开发?

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

【讨论】:

哇,感谢您的详细回答!我想仍然困扰我的是,虽然它们在技术上不相关,但很难单独使用一个 - (Adobe) Flex 包括 AIR,如果你只使用 AIR,你仍然需要一个编译器,它只包含在出于某种原因,Flex。诡异的。我想我会再四处看看,看看它是不是这样工作的。 获取 FlashDevelop,它会为你下载重要的东西。 Adobe 很快就不再使用 Flex 进行编译,请查看 Actionscript Compiler (ASC),这将很快成为标准。 Flex SDK 被捐赠给 Apache,不再是 Adob​​e 的一部分。 AIR 纯粹用于桌面/移动等相关应用程序。 @wvxvw 我在帖子中添加了一些关于 Flex Framework 和 Flex SDK 之间差异的说明。 @Socob 如果您想创建一个不带 Flex 的 AS3 AIR 应用程序,您可以使用 Flash Professional。如果你想走 HTML/JS 路线,我相信 Dreamweaver 也会支持 AIR。 @GenePavlovsky 你提到的 ASC 2.0 编译器就是我之前提到的 Falcon 编译器。我知道 Apache Flex 团队已经为 Flex 项目和 MXML 制作了“Falcon”。但如果那是完整的,我不会。你说得对,现在 AIR Dev 可以完全独立于 Flex 框架。【参考方案2】:

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

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

我将尝试在下面列出事物以及查找它们的位置,我不确定这个系统是否连贯,但看起来这是我能做的最好的:

Flex SDK

ABC (ActionScript) 编译器、SWF(转码器、链接器等)。编译器、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 版本更复杂,因为它需要您进行更多配置并从 Adob​​e 下载一些位,它们不允许在 Apache 许可下重新分发。

【讨论】:

我只需要补充一点,Apache Flex 有一个项目来准备用于 Flash Builder [或其他 IDE] 的 Flex SDK,它使“一键式”轻松获得版本可与 Flash Builder 一起使用的 Apache Flex SDK。它会自动执行相关 Adob​​e 位的下载。它处于候选发布阶段,应该很快就会推出。 嗯,不确定接受哪个答案。我想我会去 www.Flextras.com 的,但这个也很有帮助,因为它确实清除了 SDK 的不同部分以及哪些工具负责编译(证实了我的怀疑,他们的混淆方式确实没有理由设置——理论上是独立的,但实际上并非如此。恰好 Flex 包含编译器,而 AIR 不包含)。 到目前为止,只要不使用 Flex 框架,单独的 AIR SDK 就足以开发 AIR 应用程序。 AIR SDK 包括大大改进的 ASC 2.0 编译器(ActionScript 3 编译器版本 2.0)。【参考方案3】:

我没有足够的声誉将此作为评论,但参考 wxvw 的回答,Apache Flex 一键安装程序已发布,可在此处获得:

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

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

【讨论】:

默认情况下 Apache Flex 4.9.0 包含 AIR 3.4

以上是关于Adobe AIR SDK 和 Flex SDK 的关系?的主要内容,如果未能解决你的问题,请参考以下文章

从带有 AIR SDK 3.9 的 Adob​​e Flex SDK 4.6 迁移到带有 AIR SDK 3.9 的 Apache Flex SDK 4.12.0

如何将 AIR 4.0 SDK 安装到 Flash Pro CC 中

Flex / adobe air 错误收集服务

将 Adob​​e Air 3.3 SDK 与 Flash Builder 一起使用

Adobe Flex/AIR Maven 集成

无法安装 Apache Flex SDK 4.11