Flash Builder 如何确定要包含哪些 sdk 库?

Posted

技术标签:

【中文标题】Flash Builder 如何确定要包含哪些 sdk 库?【英文标题】:How does Flash Builder determine which sdk libraries to include? 【发布时间】:2011-09-27 02:39:24 【问题描述】:

在 Flash Builder 中创建新项目时,它如何确定要在构建路径中包含哪些 sdk 库?

如果我创建一个新的普通 Actionscript 项目并选择 Flex 4.1,以下库会显示在构建路径中:

全球玩家 文本布局 osmf 闪存集成 弹性 实用程序

如果我返回并切换到 Flex 3.5,它只包括:

全球玩家 弹性 实用程序

如果我创建一个新的 Flex Web 项目并选择 Flex 3.5,它包括:

全球玩家 框架 自动化 automation_agent automation_dmv automation_flashflexkit 数据可视化 qtp rpc 实用程序

这些值是在 Flash Builder 中硬编码还是以某种方式从 SDK 配置文件中读取?我查看了所有的 xml 配置文件,比如 flex-config.xml 和 air-config.xml,看起来这些信息在任何地方都不存在。

谢谢。

【问题讨论】:

我有什么遗漏吗? 【参考方案1】:

是的,它内置在框架 swc 中。您可以在框架目录的 /frameworks/build.xml 文件下找到参考资料以及它们的链接位置。

因此您可以编辑此构建文件,重新构建 swcs,然后使用它们,它们会按照您的喜好进行链接。

例如,(来自 Flex 4.5.1 构建文件):

  <target name="authoringsupport" description="Builds authoringsupport.swc">
<compc static-link-runtime-shared-libraries="true" fork="true" output="$basedir/libs/authoringsupport.swc" include-classes="AuthoringSupportClasses" locale="" accessible="true">
  <source-path path-element="$authoringsupport.dir/src"/>
  <library-path dir="$authoringsupport.dir/libs"><include name="FlexContentHolderThumbnail.swc"/></library-path>
  <external-library-path dir="$basedir/libs">
      <include name="player/$playerglobal.version/playerglobal.swc"/>
      <include name="framework.swc"/><include name="mx/mx.swc"/>
      <include name="flash-integration.swc"/>
      <include name="textLayout.swc"/>
  </external-library-path>
  <jvmarg line="$compc.jvm.args"/>
</compc>

所以它在技术上不是硬编码到闪存生成器中,而是在该 sdk 的 swc 中。 (但您可以如上所述更改)。 :D

【讨论】:

不幸的是,这个答案似乎也不正确。我用反编译器和一些试验和错误进行了几个小时的查看,看起来库 在 flash builder 中硬编码。但这比那要复杂一些。有空我会尽快发布答案。 当您启动一个项目时,它通过 .actionScriptProperties 指向库 - 但您可以将其更改为指向您自己的库 - 但您需要通过我描述的方法自己构建它们。跨度> 【参考方案2】:

经过大量试验和错误以及使用反编译器进行一些检查后,我得到了答案:

    Flash Builder 从 sdk 框架目录加载 flex-config.xml 或 air-config.xml 文件(取决于项目类型)。 它会遍历library-pathlibrary-external-path 中列出的每个条目,如果它是 SWC,则将其添加到类路径中。如果条目是一个目录,它会扫描该目录中的 SWC 并包含它们。 每个项目类型都有一个硬编码的排除列表,它告诉 Flash Builder 哪些 SWC 应从类路径中排除。对于一个普通的 actionscript 项目,这个列表有 17 个项目。对于 Flex Web 项目,该列表仅包含 flex.swc。此排除列表将写入.actionScriptProperties 文件。 任何剩余的(不排除的)SWC 都会自动添加到类路径中。 .actionScriptProperties 文件中不需要任何条目。 (即,您可以将任何扩展名为 .swc 的文件放在 frameworks/libs 目录中,Flash Builder 将包含它。)

【讨论】:

【参考方案3】:

我创建了一个 Flex 4.1 项目,并在以下位置检查了 Flex 4.1 SDK 的 flex-config。我认为这是构建路径中包含的 swc 文件的来源 - 它们与我的项目匹配:

C:\Program Files\Adobe\Adobe Flash Builder 4\sdks\4.1.0\frameworks\flex-config.xml

【讨论】:

这就是 RSL 信息的来源,但仅此而已。我完全删除了这些条目,Flash Builder 现在缺少 RSL url,但所有 SWC 仍然显示。另外,3.5 中的 flex-config.xml 只有一个“framework”条目。

以上是关于Flash Builder 如何确定要包含哪些 sdk 库?的主要内容,如果未能解决你的问题,请参考以下文章

你好世界Flash Builder

flash builder4.5 安装失败 报错信息是 Exit Code: 6

嵌入Flash Builder中的文本

Flash Builder 不显示桌面应用程序

AS3 Flash Builder 错误 参数数量不正确

Flash builder 4.6 到 Eclipse indigo