5

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

4

2 回答 2

10

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

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

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

现在要使用该库,请转到“Properties > Flex Build Path”,单击“Add Project...”按钮并选择您刚刚创建的库项目。

添加库项目

现在您已链接到该项目,您想要选择如何链接引用的组件。(双击“链接类型”进行编辑。)

选择链接类型

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

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

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

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

于 2012-05-29T08:25:25.770 回答
3

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

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

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

于 2012-05-29T07:04:32.873 回答