Flex / Flash Builder:引用另一个项目的正确方法?

时间:2012-05-28 23:48:06

标签: flash flex project-management flash-builder project

我使用Flash Builder 4.5有一个相当大的Flex / Flash Builder项目。我想创建另一个使用该原始项目中的一些组件的项目。在新项目中,我将资源与原始项目链接,它工作正常,但新项目的文件大小非常大。它接近原始项目的文件大小,即使它只使用了一小部分组件和资产。有没有更好的方法来最小化新项目的文件大小?

2 个答案:

答案 0 :(得分:10)

您应该将所有常见的可重用代码分成一个或多个库项目。在FlashBuilder中,您无法将项目的性质从应用程序转换为库,因此您必须创建一个空白库项目并复制两个项目中可用的代码。

在最简单的形式中,项目结构应如下所示:

Flex app project A (swf) \
                           Flex library project (swc)
Flex app project B (swf) /

现在要使用该库,请转到'属性> “Flex Build Path”,单击“添加项目...”按钮,然后选择刚刚创建的库项目。

add library project

现在您已链接到该项目,您希望选择引用组件的链接方式。 (双击“链接类型”进行编辑。)

choose link type

通过链接项目的方式,FB显然只是将项目A中的所有类编译成项目B.这显然不是你想要的。这些是您的链接选项(对于应用程序项目):

  • 合并到代码中:只有实际引用的代码才会被编译到主应用程序中。因此,如果从未引用lib项目中的ClassA并且ClassB是,则只将ClassB编译到主应用程序中。
  • RSL :没有任何内容编译到主应用程序中,但是库是在运行时加载的;完全,因为我们不知道我们需要哪些课程。这个库虽然缓存在客户端上,所以你只需要一次加载时间就可以了。主要应用程序将小于“合并”链接。

选择哪个选项取决于具体情况,完全取决于您。我建议你到处看看自己的区别(使用真正的服务器,因为在本地服务器上你不会感觉到加载时间。)

我还应该提到外部链接选项,它不会将任何类编译到主应用程序中,也不会在运行时加载它们。这主要用于将在同一主应用程序中用作RSL的库之间的依赖关系。

答案 1 :(得分:3)

你一定要看看用-link-report标志进行编译的内容。这将打印依赖关系图,并向您展示为什么使用这么多资源。

如果你不知道怎么做:有一个地方你可以在项目设置中添加编译器参数 - 通常FB添加-locale = en_US那里(你实际上可能不需要),添加-link -report = report.xml并编译。它将在项目的根目录中生成一个xml文件。打开它并检查。

http://www.kahunaburger.com/2008/03/08/air-link-report-visualizer/我没有使用这个程序,但它似乎给出了很好的依赖关系的可视化表示 - 也可能有用。