2010-11-01 9 views
5

Estoy intentando construir mi proyecto de flex 4 usando hormiga. En Flash Builder 4, en las propiedades del proyecto es posible establecer el "Enlace del Framework" a uno de "Merged into code", "Runtime Shared Library (RSL)" o "Usar SDK Default (biblioteca compartida en tiempo de ejecución)". ¿Cómo puedo establecer el equivalente como opciones mxmlc en build.xml?mxmlc y vinculación de framework - cómo especificar linkage como rsl

Mi build.xml actual es el siguiente:

<target name="myapp"> 
    <mxmlc 
     file="${PROJECT_ROOT}/myapp.mxml" 
     output="${DEPLOY_DIR}/myapp.swf" 
     actionscript-file-encoding="UTF-8" 
     keep-generated-actionscript="false" 
     warnings="false" optimize="true" incremental="false" > 

     <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/> 

     <source-path path-element="${FLEX_FRAMEWORKS}"/> 

     <compiler.debug>true</compiler.debug> 

     <runtime-shared-library-path path-element="${FLEX_FRAMEWORKS}/libs/framework.swc"> 
      <url rsl-url="framework_4.0.0.14159.swz"/> 
      <url rsl-url="framework_4.0.0.14159.swf"/> 
     </runtime-shared-library-path>      

     <compiler.source-path path-element="src"/> 

     <!-- List of external libraries --> 
     <compiler.source-path path-element="${MY_LIB}/src" /> 

     <!-- List of SWC files or directories that contain SWC files. --> 
     <compiler.library-path dir="libs" append="true"> 
      <include name="*.swc" /> 
     </compiler.library-path> 

     <copy todir="${DEPLOY_DIR}" file="${FLEX_FRAMEWORKS}/rsls/framework_4.0.0.14159.swz"/> 
     <copy todir="${DEPLOY_DIR}" file="${FLEX_FRAMEWORKS}/rsls/framework_4.0.0.14159.swf"/> 

    </mxmlc> 
</target> 

que supone que la fijación de la directiva de tiempo de ejecución-shared-library-path y copiar el swf marco, archivos SWZ en mi carpeta de destino serían las cosas funcionen, pero este no parece ser el caso.

La forma en que estoy evaluando si esto funciona es la siguiente: uso un preloader personalizado, y para que funcione necesito tener linkage de framework como RSL. Con "fusionarse en código", mi preloader se atasca en cierto punto y no pasa a mi swf de aplicación. Este es el mismo comportamiento que veo cuando uso el build.xml anterior, lo que me hace pensar que el SWF se está construyendo con una vinculación de framework fusionada en código (en lugar de estar vinculado a RSL).

Una pregunta relacionada con esto es cómo determinar si mi swf usa RSL o no. Creo que podría ver el tamaño de la salida compilada. Pero parece que debería haber una forma de saber si estoy usando el archivo de framework externo o si está siendo incluido en el SWF de alguna manera, sin mi conocimiento.

Respuesta

6

Esto es un poco complicado porque la documentación es un poco escasa en esto. Probablemente necesites configurar la siguiente opción en la línea de comando o en un archivo de configuración.

compartidos-estático-link-runtime-bibliotecas = false

La documentación de Adobe da la siguiente descripción un poco críptica de lo que hace esta opción.

Determina si compilar contra bibliotecas estáticamente o utilizar RSL. Establezca esta opción en verdadero para ignorar los RSL especificados por la opción runtime-shared-library-path. Establezca esta opción en falso para usar los RSL. El valor por defecto es verdadero.

Esta opción es útil para que pueda cambiar rápidamente entre una aplicación enlazada estática y dinámicamente sin tener que cambiar la opción runtime-shared-library-path, que puede ser prolija, o editar los archivos de configuración.

Aquí hay un enlace a la documentación. "About the application compiler options"

Tenga en cuenta que de la documentación el valor predeterminado es verdadero. SIN EMBARGO, si está cargando un archivo flex-config.xml (predeterminado o personalizado), también debe verificar si esta configuración está presente en ese archivo y de qué se trata. En mi experiencia, el valor predeterminado para frameworks/flex-config.xml es en realidad falso. Sin embargo, parece que en el ejemplo anterior esto puede establecerse de otra manera.


(se utiliza un sistema de construcción diferente a la ANT lo que no estoy tan familiarizado con la sintaxis build.xml que se necesita.)

+1

realidad hice trampa para resolver este problema. Terminé usando [sourcemate] (http://www.elementriver.com/sourcemate) para exportar mi proyecto como un archivo de compilación de ant y luego pude hacer que todo funcionara.¡Era mucho más rápido que depurar lo que adobe esperaba que pusiera en mi archivo! – cybertoast

+2

Justin, te estoy dando la respuesta correcta porque es un poco en la dirección correcta. La opción real es: . Gracias. – cybertoast

+0

Eso solucionó mi problema thx, en mi caso, usando ant para ejecutar el mxmlc como línea de comando, tuve que agregar Guian

Cuestiones relacionadas