Flex App的Size和Link报告

来源:互联网 发布:以色列 知乎 编辑:程序博客网 时间:2024/05/16 09:39

Flex App的Size和Link报告

0
Flex编译器参数: -size-report 和 -link-report

Flex编译器参数: -size-report 和 -link-report

编译参数

Flex编译器提供了一系列的编译器参数帮助我们定制应用编译过程。Flex开发者应该了解这些相关的编译参数。在Flex的在线帮助中提供了编译器参数列表。
在这篇文章中,我们介绍两个帮助你深入了解编译结果SWF内部组成的参数-link-report和-size-report。

-link-report

在Flex3.x和4.0版本的编译器中已经提供了-link-report参数,使用该选项编译Flex应用后,可以生成XML格式的SWF中内嵌的AS3类报告,该报告中也会知名每个类所占有的空间。但是,在这个报告中只提供了针对这些AS3类的尺寸,而没有更高层面的size报告,比如内嵌的字体,图片,或者SWF中其他元件等等。

Flex编译参数:-size-report

为了提供针对更高层面内容的size报告,在Flex HERO中,又提供了一个新的编译器参数-size-report,使用这个报告,开发者能够更加清楚Flex应用swf文件中,各个部分占用的空间情况,并有针对性的进行调整,以缩小swf的尺寸。

下图显示了如何设置编译器参数:

示例

所生成的linkReport部分如下:

123456789101112131415161718192021222324252627282930313233343536
<report>  <scripts>    <script name="/Applications/Adobe Flash Builder 4.5/sdks/4.5.0/frameworks/libs/textLayout.swc(flashx.textLayout.events:CompositionCompleteEvent)" mod="1295643054000" size="1904" optimizedsize="758">      <def id="flashx.textLayout.events:CompositionCompleteEvent" />      <pre id="flash.events:Event" />      <dep id="flashx.textLayout.elements:TextFlow" />      <dep id="AS3" />    </script>    <script name="/Applications/Adobe Flash Builder 4.5/sdks/4.5.0/frameworks/libs/framework.swc(mx.styles:CSSSelector)" mod="1275497464070" size="2200" optimizedsize="1261">      <def id="mx.styles:CSSSelector" />      <pre id="Object" />      <dep id="mx.styles:CSSCondition" />      <dep id="mx.styles:CSSConditionKind" />      <dep id="AS3" />      <dep id="mx.core:mx_internal" />      <dep id="mx.styles:IAdvancedStyleClient" />    </script>    <script name="/Applications/Adobe Flash Builder 4.5/sdks/4.5.0/frameworks/libs/framework.swc(mx.graphics:BitmapFillMode)" mod="1275497481789" size="490" optimizedsize="261">      <def id="mx.graphics:BitmapFillMode" />      <pre id="Object" />      <dep id="AS3" />    </script>    <script name="/Applications/Adobe Flash Builder 4.5/sdks/4.5.0/frameworks/libs/framework.swc(mx.utils:DescribeTypeCache)" mod="1288294862779" size="1706" optimizedsize="990">      <def id="mx.utils:DescribeTypeCache" />      <pre id="Object" />      <dep id="flash.utils:describeType" />      <dep id="ReferenceError" />      <dep id="flash.utils:getQualifiedClassName" />      <dep id="mx.utils:DescribeTypeCacheRecord" />      <dep id="AS3" />      <dep id="mx.binding:BindabilityInfo" />      <dep id="flash.utils:getDefinitionByName" />      <dep id="XML" />      <dep id="mx.core:mx_internal" />    </script></scripts></report>

sizeReport部分内容如下:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
< ?xml version="1.0" encoding="UTF-8"?><report>  <swf size="4555178" compressedSize="2066554">     <!-- Header data (SWF attributes, product info, markers, etc.) -->    <headerdata totalSize="564">      <data type="metaData" size="462"/>      <data type="productInfo" size="28"/>      <data type="swfHeader" size="21"/>      <data type="debugID" size="18"/>      <data type="enableDebugger" size="16"/>      <data type="fileAttributes" size="6"/>      <data type="scriptLimits" size="6"/>      <data type="backgroundColor" size="5"/>      <data type="endMarker" size="2"/>    </headerdata>     <!-- Cumulative frame size summary. -->    <frames totalSize="4554614">      <frame name="_Main_mx_managers_SystemManager" size="135580" frame="1"/>      <frame name="Main" size="4419034" frame="2"/>    </frames>     <!-- Actionscript code and constant data. -->    <actionscript totalSize="4525102">      <abc name="mx/core/UIComponent" size="105259" frame="2"/>      <abc name="flashx/textLayout/container/ContainerController" size="82639" frame="2"/>      <abc name="mx/core/Container" size="49876" frame="2"/>      <abc name="spark/components/DataGrid" size="47363" frame="2"/>      <abc name="spark/primitives/supportClasses/GraphicElement" size="45898" frame="2"/>      <abc name="flashx/textLayout/compose/TextFlowLine" size="42200" frame="2"/>      <abc name="spark/components/RichEditableText" size="42086" frame="2"/>      <abc name="flashx/textLayout/container/TextContainerManager" size="41952" frame="2"/>      <abc name="spark/components/Scroller" size="40208" frame="2"/>      <abc name="flashx/textLayout/compose/BaseCompose" size="39741" frame="2"/>      <abc name="flashx/textLayout/elements/FlowElement" size="39226" frame="2"/>      <abc name="spark/components/Grid" size="39090" frame="2"/>      <abc name="flashx/textLayout/formats/TextLayoutFormat" size="37385" frame="2"/>      <abc name="spark/components/gridClasses/GridLayout" size="36929" frame="2"/>      <abc name="mx/managers/SystemManager" size="36356" frame="1"/>      <abc name="mx/core/FTETextField" size="34531" frame="2"/>      <abc name="flashx/textLayout/edit/SelectionManager" size="28537" frame="2"/>      <abc name="_Main_Styles" size="27469" frame="2"/>      <abc name="spark/components/WindowedApplication" size="27380" frame="2"/>      <abc name="spark/components/List" size="25814" frame="2"/></actionscript></swf></report>

在size-report中,按照头数据(HeaderData),帧小结(Frame Summary), 帧数据(Frame Data),ActionScript数据(ActionScript的代码和常量数据),Bitmap数据,字体,图形数据,声音数据,视频数据等类别组织。

非常容易使用的方法帮助你详细了解编译后SWF文件的内部组成。如果你使用命令行,可以运行如下命令:

mxmlc -size-report=sizeReport.xml -link-report=linkReport.xml xxxx.mxml

 

 

optimizer -keep-as3-metadata="Bindable,Managed,ChangeEvent,
NonCommittingChangeEvent,Transient" -input input_swf -output output_swf

原创粉丝点击