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-path
和library-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 库?的主要内容,如果未能解决你的问题,请参考以下文章