Translate

miércoles, 6 de marzo de 2013

Compilación Flex mxmlc con RSL: El orden de compilación de las RSL importa mucho

Cuando compilas tu aplicación Flex y lo haces con RSL externas para que el SWF generado pese lo menos posible (Opciones de compilación MXMLC static-rsls="false") y el orden de las RSL no es el correcto se produce el siguiente error:







VerifyError: Error #1014: flashx.textLayout.container::TextContainerManager is not found

Este error se produce al acceder con tu navegador a la aplicación, el SWF se descarga pero el error que hemos visto.

Esto se produce porque el orden que estableces en las librerías RSL en la compilación de tu SWF es el orden en que estas se descargarán del servidor.

Por lo tantos si ponemos el orden incorrecto de  las librerías al compilar, al descargar y ejecutarse el swf  de la aplicación se descargarán las librerías .swz en el orden incorrecto y el error de que una librería no se encuentra aparecerá.

El orden correcto lo podemos encontrar en nuestra FLEX SDK (en mi caso 4.6) en el archivo flex-config.xml que está en la ruta:

[FLEX_SDK_4.6_PATH]/frameworks/flex-config.xml

A continuación os pongo el comando de apache ANT que utilizo para compilar para que veáis el orden en que hay que poner las librerías .swz para que luego se descarguen correctamente. Se ve en el apartado de las

<runtime-shared-library....

Variables de ANT:

${APP_ROOT} Es la ruta física de la aplicación.
${DirectorioXmlReport} Directorio donde se crea el XML con la dependencias del proyecto.
${FLEX_HOME} Es la ruta donde está instalado el framework de flex ([FLEX_SDK_4.6_PATH])



--
<mxmlc  file="${APP_ROOT}/MyApp.mxml" keep-generated-actionscript="false" 
     output="${APP_ROOT}/${SwfDestination}/${modulo}.swf"
  actionscript-file-encoding="UTF-8"     
  services="${APP_ROOT}/WEB-INF/flex/services-config.xml"
  context-root="MyApp"    
  link-report="${DirectorioXmlReport}/report.xml"
  static-rsls="false"
        incremental="false" warnings="false" fork="true" maxmemory="512m">
  
 <!-- Compilación para la versión de Flash Player -->
 
 <target-player>11.1.0</target-player>
 
 <!-- Get default compiler options. -->
 <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>

 <!-- List of path elements that form the roots of ActionScript
        class hierarchies. -->
        <source-path path-element="${FLEX_HOME}/frameworks"/>
     
 <!-- List of SWC files or directories that contain SWC files. -->
        <compiler.library-path dir="${APP_ROOT}" append="true">
            <include name="libs" />
      </compiler.library-path>  

<!-- Parámetro para modificar el color de fondo al cargar el preloader de la aplicación-->
 <default-background-color>0x252e39</default-background-color>
 
<!-- Parametro adicional al flex compiler para incluir los .properties-->            
 <include-resource-bundles>resources</include-resource-bundles> 

<!-- Asociación de los RSLs para optimización para separar el Framework de flex de nuestros módulos.-->
     
      
<runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/framework.swc">
   <url rsl-url="framework_4.6.0.23201.swz"/>
   <url policy-file-url=""/>
   <url rsl-url="framework_4.6.0.23201.swf"/>
   <url policy-file-url=""/>
  </runtime-shared-library-path>

<runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/textLayout.swc">
   <url rsl-url="textLayout_2.0.0.232.swz"/>
   <url policy-file-url=""/>
   <url rsl-url="textLayout_2.0.0.232.swf"/>
   <url policy-file-url=""/>
  </runtime-shared-library-path>   
 
<runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/spark.swc">
   <url rsl-url="spark_4.6.0.23201.swz"/>
   <url policy-file-url=""/>
   <url rsl-url="spark_4.6.0.23201.swf"/>
   <url policy-file-url=""/>
  </runtime-shared-library-path>    
 
<runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/sparkskins.swc">
   <url rsl-url="sparkskins_4.6.0.23201.swz"/>
   <url policy-file-url=""/>
   <url rsl-url="sparkskins_4.6.0.23201.swf"/>
   <url policy-file-url=""/>
  </runtime-shared-library-path>    
 
<runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/rpc.swc">
   <url rsl-url="rpc_4.6.0.23201.swz"/>
   <url policy-file-url=""/>
   <url rsl-url="rpc_4.6.0.23201.swf"/>
   <url policy-file-url=""/>
  </runtime-shared-library-path>    

<runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/charts.swc">
   <url rsl-url="charts_4.6.0.23201.swz"/>
   <url policy-file-url=""/>
   <url rsl-url="charts_4.6.0.23201.swf"/>
   <url policy-file-url=""/>
  </runtime-shared-library-path>   

<runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/spark_dmv.swc">
   <url rsl-url="spark_dmv_4.6.0.23201.swz"/>
   <url policy-file-url=""/>
   <url rsl-url="spark_dmv_4.6.0.23201.swf"/>
   <url policy-file-url=""/>
  </runtime-shared-library-path>    
 
<runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/mx/mx.swc">
   <url rsl-url="mx_4.6.0.23201.swz"/>
   <url policy-file-url=""/>
   <url rsl-url="charts_4.6.0.23201.swf"/>
   <url policy-file-url=""/>
  </runtime-shared-library-path>
  
 
<runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/advancedgrids.swc">
   <url rsl-url="advancedgrids_4.6.0.23201.swz"/>
   <url policy-file-url=""/>
   <url rsl-url="advancedgrids_4.6.0.23201.swf"/>
   <url policy-file-url=""/>
  </runtime-shared-library-path>

 
  
  <!--Metadatos adicionales a incluir en el proyecto-->
   
 
   <!-- Metadatos dependientes de Parsley-->
   <keep-as3-metadata name="Metadata" />
   <keep-as3-metadata name="DefaultProperty" />
   <keep-as3-metadata name="Required" />
   <keep-as3-metadata name="Event" />
   <keep-as3-metadata name="AssignableTo" />
   <keep-as3-metadata name="Inject" />
   <keep-as3-metadata name="InjectConstructor" />
   <keep-as3-metadata name="Publish" />
   <keep-as3-metadata name="Subscribe" />
   <keep-as3-metadata name="PublishSubscribe" />
   <keep-as3-metadata name="Factory" />
   <keep-as3-metadata name="Init" />
   <keep-as3-metadata name="Destroy" />
   <keep-as3-metadata name="Observe" />
   <keep-as3-metadata name="AsyncInit" />
   <keep-as3-metadata name="ManagedEvents" />
   <keep-as3-metadata name="MessageDispatcher" />
   <keep-as3-metadata name="MessageHandler" />
   <keep-as3-metadata name="MessageBinding" />
   <keep-as3-metadata name="MessageInterceptor" />
   <keep-as3-metadata name="MessageError" />
   <keep-as3-metadata name="Command" />
   <keep-as3-metadata name="CommandComplete" />
   <keep-as3-metadata name="CommandResult" />
   <keep-as3-metadata name="CommandError" />
   <keep-as3-metadata name="CommandStatus" />
   <keep-as3-metadata name="ResourceBinding" />
   <keep-as3-metadata name="Selector" />
   <keep-as3-metadata name="Target" />
   <keep-as3-metadata name="Autoremove" />
   <keep-as3-metadata name="Internal" />
   <keep-as3-metadata name="ObjectDefinition" />
   <keep-as3-metadata name="DynamicObject" />

  
  <!--Localización -->
 
   <locale>es_ES</locale>
   <!--Necesario para las RSLs del framework flex-->
   <locale>en_US</locale>


  <!-- Necesario para el source path del Flex Build Paht-->
  <compiler.source-path path-element='${APP_ROOT}'/>
  <compiler.source-path path-element='${APP_ROOT}/locale/es_ES'/>
 
  <!-- Optimización-->
  <use-network>true</use-network>
     <debug>false</debug>
     <optimize>true</optimize>
  
</mxmlc>  


--





1 comentario:

  1. we will go through the Spring Security setup & common features, when and where to apply, different authentication methods, securing password with encoding schemes, & integrating Spring Security in Spring MVC 4 and Hibernate based applications, exploring them with help of fully-working examples.
    spring security training in chennai

    ResponderEliminar