zoukankan      html  css  js  c++  java
  • flex mxmlc 手动编译项目

    首先:

    1.下载flex的sdk,如果你电脑有装flash builder,它自带了一份,位于安装目录的sdks目录下。

    备注:(sdk依赖java的jre)

    2.配置mxmlc的java运行环境jre,该配置文件位于sdk/bin/jvm.config,更改java.home=jre所在目录。

    3.配置mxmlc的环境变量,改环境变量exe,位于sdk/bin/mxmlc.exe,控制台输入:mxmlc,没报错证明配置成功。

    注意:如果不配置,并且你之前有配置过java的jre,那么mxmlc会默认为java的jre。

    然后:需要一个编译项目的配置文件flex-config .xml,该文件可以在sdk的frameworks目录可以找到。可以参考以下完整的:

    <?xml version="1.0"?>
    
    <!--
    
        ADOBE SYSTEMS INCORPORATED
        Copyright 2005-2007 Adobe Systems Incorporated
        All Rights Reserved.
    
        NOTICE: Adobe permits you to use, modify, and distribute this file
        in accordance with the terms of the license agreement accompanying it.
    
    -->
    
    <flex-config>
        <!-- Specifies the minimum player version that will run the compiled SWF. -->
       <target-player>11.1</target-player>
    
        <!-- Specifies the version of the compiled SWF -->
        <swf-version>14</swf-version>
    
       <compiler>
    
          <!-- Turn on generation of accessible SWFs. -->
          <accessible>true</accessible>
    
          <!-- Specifies the locales for internationalization. -->
          <locale>
              <locale-element>en_US</locale-element>
          </locale>
    
          <!-- List of path elements that form the roots of ActionScript class hierarchies. -->
          <!-- not set -->
          <!--
          <source-path>
             <path-element>string</path-element>
          </source-path>
          -->
    
         <!-- Allow the source-path to have path-elements which contain other path-elements -->
         <allow-source-path-overlap>false</allow-source-path-overlap>
    
          <!-- Run the AS3 compiler in a mode that detects legal but potentially incorrect -->
          <!-- code.                                                                       -->
          <show-actionscript-warnings>true</show-actionscript-warnings>
    
          <!-- Turn on generation of debuggable SWFs. False by default for mxmlc, -->
          <!-- but true by default for compc. -->
          <!--
          <debug>true</debug>
          -->
    
          <!-- List of SWC files or directories to compile against but to omit from -->
          <!-- linking.                                                             -->
          <external-library-path>
              <path-element>${flexlib}/libs/player/{targetPlayerMajorVersion}.{targetPlayerMinorVersion}/playerglobal.swc</path-element>
          </external-library-path>
    
         
    
          <!-- not set -->
         
          <!--<include-libraries>
             <library>src/res/comlib.swc</library>
          </include-libraries>
          -->
         
          <!-- List of SWC files or directories that contain SWC files. -->
          <library-path>
             <path-element>${flexlib}/libs</path-element>
             <path-element>${flexlib}/libs/mx</path-element>
             <path-element>${flexlib}/locale/{locale}</path-element>
             <!-- The following entry is because LCDS copies playerfds.swc in the player folder -->
             <path-element>${flexlib}/libs/player</path-element>
             <path-element>${flexlib}/src/res</path-element>
          </library-path>
    
          <namespaces>
          <!-- Specify a URI to associate with a manifest of components for use as MXML -->
          <!-- elements.                                                                -->
             <namespace>
                <uri>http://ns.adobe.com/mxml/2009</uri>
                <manifest>${flexlib}/mxml-2009-manifest.xml</manifest>
             </namespace>
             <namespace>
                <uri>library://ns.adobe.com/flex/spark</uri>
                <manifest>${flexlib}/spark-manifest.xml</manifest>
             </namespace>
             <namespace>
                <uri>library://ns.adobe.com/flex/mx</uri>
                <manifest>${flexlib}/mx-manifest.xml</manifest>
             </namespace>
             <namespace>
                <uri>http://www.adobe.com/2006/mxml</uri>
                <manifest>${flexlib}/mxml-manifest.xml</manifest>
             </namespace>
          </namespaces>
    
          <!-- Enable post-link SWF optimization. -->
          <optimize>true</optimize>
    
          <!-- Enable trace statement omission. -->
          <omit-trace-statements>true</omit-trace-statements>
    
          <!-- Keep the following AS3 metadata in the bytecodes.                                             -->
          <!-- Warning: For the data binding feature in the Flex framework to work properly,                 -->
          <!--          the following metadata must be kept:                                                 -->
          <!--          1. Bindable                                                                          -->
          <!--          2. Managed                                                                           -->
          <!--          3. ChangeEvent                                                                       -->
          <!--          4. NonCommittingChangeEvent                                                          -->
          <!--          5. Transient                                                                         -->
          <!--
          <keep-as3-metadata>
              <name>Bindable</name>
              <name>Managed</name>
              <name>ChangeEvent</name>
              <name>NonCommittingChangeEvent</name>
              <name>Transient</name>
          </keep-as3-metadata>
          -->
    
          <!-- Turn on reporting of data binding warnings. For example: Warning: Data binding -->
          <!-- will not be able to detect assignments to "foo".                               -->
          <show-binding-warnings>true</show-binding-warnings>
    
          <!-- toggle whether warnings generated from unused type selectors are displayed -->
          <show-unused-type-selector-warnings>true</show-unused-type-selector-warnings>
    
          <!-- Run the AS3 compiler in strict error checking mode. -->
          <strict>true</strict>
    
          <!-- Use the ActionScript 3 class based object model for greater performance and better error reporting. -->
          <!-- In the class based object model most built-in functions are implemented as fixed methods of classes -->
          <!-- (-strict is recommended, but not required, for earlier errors) -->
          <as3>true</as3>
    
          <!-- Use the ECMAScript edition 3 prototype based object model to allow dynamic overriding of prototype -->
          <!-- properties. In the prototype based object model built-in functions are implemented as dynamic      -->
          <!-- properties of prototype objects (-strict is allowed, but may result in compiler errors for         -->
          <!-- references to dynamic properties) -->
          <es>false</es>
    
          <!-- List of CSS or SWC files to apply as a theme. -->
          <theme>
             <!-- The Flex 4 default theme is Spark. -->
             <filename>${flexlib}/themes/Halo/halo.swc</filename>
          </theme>
    
          <!-- Turns on the display of stack traces for uncaught runtime errors. -->
          <verbose-stacktraces>false</verbose-stacktraces>
    
          <!-- Defines the AS3 file encoding. -->
          <!-- not set -->
          <!--
          <actionscript-file-encoding></actionscript-file-encoding>
          -->
    
          <fonts>
    
              <!-- Enables advanced anti-aliasing for embedded fonts, which provides greater clarity for small -->
              <!-- fonts. This setting can be overriden in CSS for specific fonts. -->
              <!-- NOTE: flash-type has been deprecated. Please use advanced-anti-aliasing <flash-type>true</flash-type> -->
              <advanced-anti-aliasing>true</advanced-anti-aliasing>
    
              <!-- The number of embedded font faces that are cached. -->
              <max-cached-fonts>20</max-cached-fonts>
    
              <!-- The number of character glyph outlines to cache for each font face. -->
              <max-glyphs-per-face>1000</max-glyphs-per-face>
    
              <!-- Defines ranges that can be used across multiple font-face declarations. -->
              <!-- See flash-unicode-table.xml for more examples. -->
              <!-- not set -->
              <!--
              <languages>
                  <language-range>
                      <lang>englishRange</lang>
                      <range>U+0020-007E</range>
                  </language-range>
              </languages>
              -->
    
              <!-- Compiler font manager classes, in policy resolution order-->
              <managers>
                  <manager-class>flash.fonts.JREFontManager</manager-class>
                  <manager-class>flash.fonts.BatikFontManager</manager-class>
                  <manager-class>flash.fonts.AFEFontManager</manager-class>
                  <manager-class>flash.fonts.CFFFontManager</manager-class>
              </managers>
    
              <!-- File containing cached system font licensing information produced via
                   java -cp mxmlc.jar flex2.tools.FontSnapshot (fontpath)
                   Will default to winFonts.ser on Windows XP and
                   macFonts.ser on Mac OS X, so is commented out by default.
     -->
              <local-fonts-snapshot>${flexlib}/localFonts.ser</local-fonts-snapshot>
             
    
          </fonts>
    
          <!-- Array.toString() format has changed. -->
          <warn-array-tostring-changes>false</warn-array-tostring-changes>
    
          <!-- Assignment within conditional. -->
          <warn-assignment-within-conditional>true</warn-assignment-within-conditional>
    
          <!-- Possibly invalid Array cast operation. -->
          <warn-bad-array-cast>true</warn-bad-array-cast>
    
          <!-- Non-Boolean value used where a Boolean value was expected. -->
          <warn-bad-bool-assignment>true</warn-bad-bool-assignment>
    
          <!-- Invalid Date cast operation. -->
          <warn-bad-date-cast>true</warn-bad-date-cast>
    
          <!-- Unknown method. -->
          <warn-bad-es3-type-method>true</warn-bad-es3-type-method>
    
          <!-- Unknown property. -->
          <warn-bad-es3-type-prop>true</warn-bad-es3-type-prop>
    
          <!-- Illogical comparison with NaN. Any comparison operation involving NaN will evaluate to false because NaN != NaN. -->
          <warn-bad-nan-comparison>true</warn-bad-nan-comparison>
    
          <!-- Impossible assignment to null. -->
          <warn-bad-null-assignment>true</warn-bad-null-assignment>
    
          <!-- Illogical comparison with null. -->
          <warn-bad-null-comparison>true</warn-bad-null-comparison>
    
          <!-- Illogical comparison with undefined. Only untyped variables (or variables of type *) can be undefined. -->
          <warn-bad-undefined-comparison>true</warn-bad-undefined-comparison>
    
          <!-- Boolean() with no arguments returns false in ActionScript 3.0. Boolean() returned undefined in ActionScript 2.0. -->
          <warn-boolean-constructor-with-no-args>false</warn-boolean-constructor-with-no-args>
    
          <!-- __resolve is no longer supported. -->
          <warn-changes-in-resolve>false</warn-changes-in-resolve>
    
          <!-- Class is sealed. It cannot have members added to it dynamically. -->
          <warn-class-is-sealed>true</warn-class-is-sealed>
    
          <!-- Constant not initialized. -->
          <warn-const-not-initialized>true</warn-const-not-initialized>
    
          <!-- Function used in new expression returns a value. Result will be what the -->
          <!-- function returns, rather than a new instance of that function.           -->
          <warn-constructor-returns-value>false</warn-constructor-returns-value>
    
          <!-- EventHandler was not added as a listener. -->
          <warn-deprecated-event-handler-error>false</warn-deprecated-event-handler-error>
    
          <!-- Unsupported ActionScript 2.0 function. -->
          <warn-deprecated-function-error>true</warn-deprecated-function-error>
    
          <!-- Unsupported ActionScript 2.0 property. -->
          <warn-deprecated-property-error>true</warn-deprecated-property-error>
    
          <!-- More than one argument by the same name. -->
          <warn-duplicate-argument-names>true</warn-duplicate-argument-names>
    
          <!-- Duplicate variable definition -->
          <warn-duplicate-variable-def>true</warn-duplicate-variable-def>
    
          <!-- ActionScript 3.0 iterates over an object's properties within a "for x in target" statement in random order. -->
          <warn-for-var-in-changes>false</warn-for-var-in-changes>
    
          <!-- Importing a package by the same name as the current class will hide that class identifier in this scope. -->
          <warn-import-hides-class>true</warn-import-hides-class>
    
          <!-- Use of the instanceof operator. -->
          <warn-instance-of-changes>true</warn-instance-of-changes>
    
          <!-- Internal error in compiler. -->
          <warn-internal-error>true</warn-internal-error>
    
          <!-- _level is no longer supported. For more information, see the flash.display package. -->
          <warn-level-not-supported>true</warn-level-not-supported>
    
          <!-- Missing namespace declaration (e.g. variable is not defined to be public, private, etc.). -->
          <warn-missing-namespace-decl>true</warn-missing-namespace-decl>
    
          <!-- Negative value will become a large positive value when assigned to a uint data type. -->
          <warn-negative-uint-literal>true</warn-negative-uint-literal>
    
          <!-- Missing constructor. -->
          <warn-no-constructor>false</warn-no-constructor>
    
          <!-- The super() statement was not called within the constructor. -->
          <warn-no-explicit-super-call-in-constructor>false</warn-no-explicit-super-call-in-constructor>
    
          <!-- Missing type declaration. -->
          <warn-no-type-decl>true</warn-no-type-decl>
    
          <!-- In ActionScript 3.0, white space is ignored and '' returns 0. Number() returns -->
          <!-- NaN in ActionScript 2.0 when the parameter is '' or contains white space.      -->
          <warn-number-from-string-changes>false</warn-number-from-string-changes>
    
          <!-- Change in scoping for the this keyword. Class methods extracted from an  -->
          <!-- instance of a class will always resolve this back to that instance. In   -->
          <!-- ActionScript 2.0 this is looked up dynamically based on where the method -->
          <!-- is invoked from.                                                         -->
          <warn-scoping-change-in-this>false</warn-scoping-change-in-this>
    
          <!-- Inefficient use of += on a TextField.-->
          <warn-slow-text-field-addition>true</warn-slow-text-field-addition>
    
          <!-- Possible missing parentheses. -->
          <warn-unlikely-function-value>true</warn-unlikely-function-value>
    
          <!-- Possible usage of the ActionScript 2.0 XML class. -->
          <warn-xml-class-has-changed>false</warn-xml-class-has-changed>
    
       </compiler>
    
       <!-- compute-digest: writes a digest to the catalog.xml of a library. Use this when the library will be used as a
                            cross-domain rsl.-->
       <!-- compute-digest usage:
       <compute-digest>boolean</compute-digest>
       -->
    
       <!-- remove-unused-rsls: remove RSLs that are not being used by the application-->
       <remove-unused-rsls>true</remove-unused-rsls>
    
       <!-- A list of runtime shared library URLs to be loaded before applications start. -->
       <!-- not set -->
       <!--
       <runtime-shared-libraries>
          <url>string</url>
          <url>string</url>
       </runtime-shared-libraries>
       -->
        
        <!-- runtime-shared-library-path: specifies a SWC or directory to link against and an RSL URL to load with optional failover URLs -->
          <!-- Framework SWC -->
        <runtime-shared-library-path>
            <path-element>${flexlib}/libs/framework.swc</path-element>
            <rsl-url>http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/framework_4.6.0.23201.swz</rsl-url>
            <policy-file-url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</policy-file-url>
            <rsl-url>framework_4.6.0.23201.swz</rsl-url>
            <policy-file-url></policy-file-url>
        </runtime-shared-library-path>
       
        <!-- TextLayout SWC -->
          <runtime-shared-library-path>
            <path-element>${flexlib}/libs/textLayout.swc</path-element>
            <rsl-url>http://fpdownload.adobe.com/pub/swz/tlf/2.0.0.232/textLayout_2.0.0.232.swz</rsl-url>
            <policy-file-url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</policy-file-url>
            <rsl-url>textLayout_2.0.0.232.swz</rsl-url>
            <policy-file-url></policy-file-url>
        </runtime-shared-library-path>
        
          <!-- Spark SWC-->
           <runtime-shared-library-path>
            <path-element>${flexlib}/libs/spark.swc</path-element>
            <rsl-url>http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/spark_4.6.0.23201.swz</rsl-url>
            <policy-file-url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</policy-file-url>
            <rsl-url>spark_4.6.0.23201.swz</rsl-url>
            <policy-file-url></policy-file-url>
        </runtime-shared-library-path>
        
          <!-- Sparkskins SWC-->
           <runtime-shared-library-path>
            <path-element>${flexlib}/libs/sparkskins.swc</path-element>
            <rsl-url>http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/sparkskins_4.6.0.23201.swz</rsl-url>
            <policy-file-url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</policy-file-url>
            <rsl-url>sparkskins_4.6.0.23201.swz</rsl-url>
            <policy-file-url></policy-file-url>
        </runtime-shared-library-path>
         
        <!-- RPC SWC -->
        <runtime-shared-library-path>
            <path-element>${flexlib}/libs/rpc.swc</path-element>
            <rsl-url>http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/rpc_4.6.0.23201.swz</rsl-url>
            <policy-file-url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</policy-file-url>
            <rsl-url>rpc_4.6.0.23201.swz</rsl-url>
            <policy-file-url></policy-file-url>
        </runtime-shared-library-path>
            
          <!-- Charts SWC -->
        <runtime-shared-library-path>
            <path-element>${flexlib}/libs/charts.swc</path-element>
            <rsl-url>http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/charts_4.6.0.23201.swz</rsl-url>
            <policy-file-url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</policy-file-url>
            <rsl-url>charts_4.6.0.23201.swz</rsl-url>
            <policy-file-url></policy-file-url>
        </runtime-shared-library-path>
    
          <!-- Spark_dmv SWC -->
        <runtime-shared-library-path>
            <path-element>${flexlib}/libs/spark_dmv.swc</path-element>
            <rsl-url>http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/spark_dmv_4.6.0.23201.swz</rsl-url>
            <policy-file-url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</policy-file-url>
            <rsl-url>spark_dmv_4.6.0.23201.swz</rsl-url>
            <policy-file-url></policy-file-url>
        </runtime-shared-library-path>
    
          <!-- OSMF SWC -->
         <runtime-shared-library-path>
            <path-element>${flexlib}/libs/osmf.swc</path-element>
            <rsl-url>http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/osmf_1.0.0.16316.swz</rsl-url>
            <policy-file-url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</policy-file-url>
            <rsl-url>osmf_1.0.0.16316.swz</rsl-url>
            <policy-file-url></policy-file-url>
        </runtime-shared-library-path>
          
          <!-- MX SWC -->
        <runtime-shared-library-path>
            <path-element>${flexlib}/libs/mx/mx.swc</path-element>
            <rsl-url>http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/mx_4.6.0.23201.swz</rsl-url>
            <policy-file-url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</policy-file-url>
            <rsl-url>mx_4.6.0.23201.swz</rsl-url>
            <policy-file-url></policy-file-url>
        </runtime-shared-library-path>
       
          <!-- Advancedgrids SWC -->
        <runtime-shared-library-path>
            <path-element>${flexlib}/libs/advancedgrids.swc</path-element>
            <rsl-url>http://fpdownload.adobe.com/pub/swz/flex/4.6.0.23201/advancedgrids_4.6.0.23201.swz</rsl-url>
            <policy-file-url>http://fpdownload.adobe.com/pub/swz/crossdomain.xml</policy-file-url>
            <rsl-url>advancedgrids_4.6.0.23201.swz</rsl-url>
            <policy-file-url></policy-file-url>
        </runtime-shared-library-path>
    
        <!-- static-link-runtime-shared-libraries: statically link the libraries specified by the -runtime-shared-libraries-path option.-->
        <static-link-runtime-shared-libraries>false</static-link-runtime-shared-libraries>
    
       <!-- target-player: specifies the version of the player the application is targeting.
                           Features requiring a later version will not be compiled into the application.
                           The minimum value supported is "9.0.0".-->
       <!-- target-player usage:
       <target-player>version</target-player>
       -->
    
       <!-- Enables SWFs to access the network. -->
       <use-network>true</use-network>
    
       <!-- Metadata added to SWFs via the SWF Metadata tag. -->
       <metadata>
          <title>Adobe Flex 4 Application</title>
          <description>http://www.adobe.com/products/flex</description>
          <publisher>unknown</publisher>
          <creator>unknown</creator>
          <language>EN</language>
       </metadata>
    
       <!-- licenses: specifies a list of product and serial number pairs. -->
       <!-- not set -->
       <!--
       <licenses>
          <license>
             <product>string</product>
             <serial-number>number</serial-number>
          </license>
       </licenses>
       -->
    
    </flex-config>

    备注:

    1.其中${flexlib} 代表sdk的frameworks目录。

    2.由于我的项目是Halo主题,所以设置<filename>${flexlib}/themes/Halo/halo.swc</filename>指定主题,

    如果是spark主题,则:<filename>${flexlib}/themes/Spark/spark.css</filename>。

    最后:编写编译批处理

    假定工程的application文件位于D:/project/src/test.mxml,依赖swc文件位于D:/project/src/lib目录,输出目录为D:/output

    那么:建立批处理文件bulid.bat

    @echo off
    cls
    set appPath=D:/project/src
    set outPath=D:/output
    mxmlc -load-config flex-config.xml %appPath%/test.mxml -library-path+=%appPath%/lib -output %outPath%/test.swf
    暗夜之中,才见繁星;危机之下,暗藏转机;事在人为,为者常成。
  • 相关阅读:
    JavaFX学习曲线日记2:声明用户接口
    深入学习JavaFX脚本语言
    JavaFX学习曲线日记2:声明用户接口
    JavaFX学习曲线日记1:探索JavaFX脚本
    深入学习JavaFX脚本语言
    略谈数学中的映射在其它领域的踪迹
    Using Swing's Pluggable Look and Feel
    JavaFX学习曲线日记1:探索JavaFX脚本
    赖勇浩:应对多核编程革命
    Using Swing's Pluggable Look and Feel
  • 原文地址:https://www.cnblogs.com/zenghansen/p/3830370.html
Copyright © 2011-2022 走看看