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

Ste*_*ven 5 apache-flex flash project-management project flash-builder

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

RIA*_*tar 10

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

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

Flex app project A (swf) \
                           Flex library project (swc)
Flex app project B (swf) /
Run Code Online (Sandbox Code Playgroud)

现在要使用该库,转到"属性> Flex构建路径",单击"添加项目..."按钮,然后选择刚刚创建的库项目.

添加库项目

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

选择链接类型

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

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

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

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


小智 3

您绝对应该看看使用-link-report标志进行编译会做什么。这会打印依赖关系图,并向您展示为什么使用这么多资源。

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

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