【问题标题】:How does Flash Builder determine which sdk libraries to include?Flash Builder 如何确定要包含哪些 sdk 库?
【发布时间】: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,看起来这些信息在任何地方都不存在。

谢谢。

【问题讨论】:

  • 我有什么遗漏吗?

标签: apache-flex flash-builder


【解决方案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】:

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

  1. Flash Builder 从 sdk 框架目录加载 flex-config.xml 或 air-config.xml 文件(取决于项目类型)。
  2. 它会遍历library-pathlibrary-external-path 中列出的每个条目,如果它是 SWC,则将其添加到类路径中。如果条目是一个目录,它会扫描该目录中的 SWC 并包含它们。
  3. 每个项目类型都有一个硬编码的排除列表,它告诉 Flash Builder 哪些 SWC 应从类路径中排除。对于一个普通的 actionscript 项目,这个列表有 17 个项目。对于 Flex Web 项目,该列表仅包含 flex.swc。此排除列表将写入.actionScriptProperties 文件。
  4. 任何剩余的(不排除的)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”条目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 2016-01-29
    • 1970-01-01
    相关资源
    最近更新 更多