`
gaoke
  • 浏览: 86792 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

flex 编译优化

    博客分类:
  • Flex
阅读更多
22.12.1.问题
我想减小文件大小和模块的后续下载时间。

22.12.2.解决办法
当编译应用程序时使用mxmlc工具的link-report命令行参数生成一个连接报告文件,然后在编译模块时把报告文件作为load-externs命令行参数值,确保只有模块需要的类被编译进来。

22.12.3.讨论
当你编译模块时,所有模块依赖的自定义或框架代码都被编译进生成的SWF文件中。在这些代码中,特别是框架代码很多都是和主程序和模块所共有的。你可以根据一个连接报告文件删除模块中多余的代码以减小文件大小。

连接报告文件列出了主程序依赖的类,当编译主程序时使用link-report命令行参数生成连接报告文件。下面的命令生成连接报告文件report.xml:
>mxmlc -link-report=report.xml MyApplication.mxml
生成的连接报告文件供编译模块时用,要删除多余的代码,减小模块文件大小,编译模块时使用link-externs命令行参数值设置为刚才生成的连接报告文件:
>mxmlc -load-externs=report.xml MyModule.mxml
生成的模块SWF文件不包含任何主程序和模块依赖代码。当你的主程序和模块都有框架代码时这是一个很好的优化工具。根据连接报告文件排除的代码和主程序和模块有一定关系的,也就是说如果主程序代码发生改变,你就需要重新生成连接报告文件并重新编译模块。

如果主程序使用多个模块,这项技术也可被用来编译那些在主程序中多余,而多个模块都需要的代码。实际上,这是通用的规则去编译任何管理类,比如mx.managers.DragManager 和mx.managers.PopUpManager,模块可能依赖于主程序。这是因为模块不能访问另一模块的资源,否则就会抛出运行时异常,例如一个模块试图引用其他模块的DragManager。

要确保模块都是引用主程序中的同一个管理器,你需要在主程序中导入和申明一个类本地变量:
-ActionScript
import mx.managers.PopUpManager;
var popUpManager:PopUpManager;

用生成的连接报告文件去编译模块,确保模块都是使用同一个管理器引用,以减少代码冗余和模块大小。

F:\Program Files\Adobe\Flash Builder 4\Adobe Flash Builder 4\sdks\3.5.0\bin

mxmlc -link-report=report.xml aquForYwhs.mxml -target-player=10.0.0

-load-externs=D:/aquaqu/aquForYwhs/aquForYwhs/flex_src/report.xml

mxmlc -services "D:/aquaqu/aquForYwhs/aquForYwhs/WebRoot/WEB-INF/flex/services-config.xml" -locale en_US abc.mxml






Flex Builder 3把release版本的编译独立出来做了一个功能:File-Export-Release Build…另外还有一个打包的功能。不过在使用之前,先需要指定默认的主文件(如下图)。












最近使用PuerMVC和Module机制构建了一个界面和操作类似WINDOW7的系统框架,将flex的module好好研究了一番,关于module的性能优化和开发中相关注意事项就不多说了,我博客里面有2篇文章讲解非常详细了,这次主要说一说module体积的相关情况。

一个应用程序包含多个module,首先看看最简单的测试结果,我拿2个module进行测试,这两个module使用到了第三方组件MDIWindows和Datagrid,Tree等flex组件。

1.debug编译,模块编译不使用链接报告优化,结果如下
  应用程序主swf文件大小:450KB  模块A:250KB,模块B:240KB

2.debug编译,模块编译使用链接报告优化,结果如下
  应用程序主swf文件大小:670KB  模块A:475KB,模块B:467KB

3.release编译,模块编译不使用链接报告优化,结果如下
  应用程序主swf文件大小:300KB  模块A:160KB,模块B:150KB

4.release编译,模块编译使用链接报告优化,结果如下
  应用程序主swf文件大小:440KB  模块A:35KB,模块B:30KB

首先使用链接报告优化简单module体积,将主应用和模块都使用的资源或者各个module公用的资源编译到主应用swf,通过链接报告来编译模块swf,这样模块编译时将主应用已经编译的资源不再编译,从而减少了module的大小,加快了模块的加载速度。

例如A,B两个模块和主应用都用到了Music类,则使用链接报告优化后A,B连个模块则不将Music类编译进自己的模块。
例如A,B连个模块都使用到了Player类,而主应用没有适用到Player类,则主应用SWF中不包含Player类的信息,A,B模块的SWF中都包含Player类的信息,因此在开发中为了减少模块大小,将各个模块公用而主应用不使用的资源,如Player类引入到主应用中,比如在Application的script标签中使用下面的代码

import a.b.c.Player;Player;

或者仅仅定义一个Player类型的变量

import a.b.c.Player;

private var player:Player ;
  

这些是链接报告优化模块大小的相关知识。但是通过上面的数据看出情况并非如此,这是因为debug环境下编译的文件包含各种调试信息,编译出来的swf是用于开发人员开发调试使用,真正的链接报告优化是针对release编译结果来说的,可以看到在主应用中将A.B模块公用的代码应用到主应用中的时候,主应用增加了140KB,而A.B模块分别减少了130KB和120KB。
分享到:
评论

相关推荐

    flex编译优化方法

    Flex编译优化方法是提升开发效率的关键,尤其是在大型Flex项目中,编译时间长和Eclipse性能问题可能严重影响开发流程。以下是一些针对Flex编译慢的优化策略: 1. **关闭不必要的项目**:在Eclipse中,确保只开启...

    flex编译

    Flex编译是一个重要的主题,尤其对于那些在Web开发领域中使用Adobe Flex框架的开发者来说。Flex是一种基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。它允许开发者创建具有动态图形、视频和...

    Flash(Flex)反编译及修改

    以下将详细讲解Flash和Flex反编译的相关知识点。 1. **什么是反编译**: 反编译是将已编译的二进制代码转换回源代码的过程。对于Flash和Flex,这个过程涉及到将SWF文件(Flash的执行格式)还原成ActionScript代码,...

    Flex 编译参数选项

    Flex是一种开源的、基于ActionScript和MXML的框架,用于构建富互联网应用...由于未提供实际的文档内容,以上只是基于Flex编译参数的一般性解释。对于具体细节和示例,建议阅读原文档或访问提供的博客链接获取完整信息。

    flex瘦身优化之我见(内部资料)

    【Flex瘦身优化】是针对Flex开发中遇到的项目体积过大的问题进行的一系列优化措施,主要是为了减小Flex应用程序的发布体积,提高加载速度和用户体验。以下是一套可行的优化方案: 1. **关闭编译调试信息**: 添加`...

    JW flv player flex修改源码并编译

    在本文中,我们将深入探讨如何对JW FLV Player进行源码修改并使用Flex和Ant进行编译。JW FLV Player是一款流行的开源Flash视频播放器,它支持FLV格式和其他多种视频格式,广泛应用于网站媒体播放。让我们一步步了解...

    bison和flex的联合编译.docx

    在本文中,我们将深入探讨如何在Ubuntu环境下使用Bison和Flex联合编译生成一个简单的计算器。Bison是一个解析器生成器,它根据语法规则创建...在实际使用中,注意解决编译错误和优化词法规则,以便更好地实现目标功能。

    编译原理(FLEX&bison).zip

    通过学习FLEX和BISON,我们可以更深入地理解编译器的工作原理,这对于编写高效、优化的代码,甚至是开发自己的编程语言都有极大的帮助。同时,这种实践性的学习方法也能提升问题解决能力和抽象思维能力,对于任何...

    编译原理flex例题资源包

    在编译原理的学习和实践中,掌握Flex的使用是至关重要的。 Flex主要负责识别源代码中的词汇结构,将其转化为符号供语法分析阶段使用。它基于正则表达式来定义词法规则,通过flex工具,我们可以编写lex.y文件(通常...

    专题资料(2021-2022年)FLEX提高编译效率解决方案.docx

    本文将深入探讨 Flex 开发过程中遇到的编译效率低下问题,并提供一系列解决方案,帮助开发者优化编译过程,提升开发效率。 一、问题描述 1. 低性能的开发机器:开发人员使用的电脑配置不足,例如内存低于2GB,会...

    flex4 IDE 修改及时编译 教程

    这里可以配置编译参数,如优化级别、调试信息等。为了实现即时编译,确保勾选“Always compile against the most recent Flex SDK”选项。 2. **自动编译**:在“Flex Compiler”选项下,找到“Build automatically...

    使用ant编译生成flex的swc文件

    总的来说,通过Ant和Flex SDK的结合,开发者可以创建定制的构建流程,包括编译、优化、打包等,适应不同项目的需求。这种方式不仅简化了大型Flex项目的管理,还允许团队更专注于代码开发,而不是构建过程。因此,...

    eclipse下tomacat的配制flex编译的配制方法.pdf

    ### Eclipse 下 Tomcat 的配置与Flex编译配置详解 #### 一、Eclipse 下 Tomcat 的配置 **准备工作** 为了确保Eclipse与Tomcat能够顺利地集成在一起,并且支持JavaEE应用,首先需要进行以下几项准备工作: 1. **...

    编译原理实验MiniPascal编译器设计 Flex+Bison

    总之,通过这个“编译原理实验MiniPascal编译器设计 Flex+Bison”项目,学习者将深入理解编译器的工作流程,掌握词法分析和语法分析的关键技术,并具备实际动手实现一个小型编译器的能力。这对于提升编程技能和深入...

    PERL-FLEX.rar_flex_软件编译工具

    5. **效率优化**:flex生成的扫描器通常很高效,因为它会尽可能地减少状态转移,以提高解析速度。 6. **与 Bison 的配合**:flex常与另一个工具Bison(语法分析器生成器)配合使用,共同构建完整的编译器或解析器。...

    Flex中采用Flex-config.xml进行命令行的编译

    通过修改`flex-config.xml`,我们可以优化编译过程,控制输出的SWF或SWC文件的特性,以及调整各种编译选项。 `flex-config.xml`文件的结构基于XML,其中包含了多个配置项,比如编译参数、库路径、元数据等。例如,...

    在64位windows下的bison 3.7和flex 2.6.4

    3. 编译Bison和Flex:在Cygwin的bash shell中,你可以使用`./configure`,`make`和`make install`命令来编译和安装Bison和Flex。不过,由于描述中提到的版本已经配置好,你只需解压提供的压缩包,就可以直接使用。 ...

    关于flex与flash生成swf文件的加载(体积)问题

    5. **利用优化工具**:Adobe的Flex Builder或Flash Builder提供了优化编译设置,如“发布设置”中的“优化”选项,可以开启或关闭某些优化策略。 6. **延迟加载**:不是所有内容都需要在初始加载时就加载完全,可以...

    flex4需要编译的基本库

    SWC文件是Adobe Flex中的库打包格式,包含了编译后的ActionScript类、资源和元数据。这个特定的SWC可能包含了与Flash Player交互、数据绑定、事件处理和组件相关的类库,使得开发者能够更方便地处理数据和展示动态...

Global site tag (gtag.js) - Google Analytics