2010-11-01 15 views
5

Sto cercando di costruire il mio progetto Flex 4 utilizzando formica. In Flash Builder 4, nelle proprietà del progetto è possibile impostare il "collegamento del framework" su "Unisci nel codice", "Libreria condivisa di runtime (RSL)" o "Usa predefinito SDK (Libreria condivisa di runtime)". Come posso impostare l'equivalente come opzioni mxmlc in build.xml?mxmlc e il quadro legame - come specificare il collegamento come RSL

mio build.xml attuale si presenta così:

<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> 

ho pensato che l'impostazione della direttiva runtime-shared-library-path e copiando il file SWF quadro, i file SWZ nella mia cartella di destinazione sarebbe far funzionare le cose, ma questo non sembra essere il caso.

Il modo in cui sto valutare se questo funziona è la seguente: io uso un preloader personalizzato, e per farlo funzionare ho bisogno di avere il collegamento quadro come RSL. Con "unito nel codice", il mio preloader si blocca in un certo punto e non progredisce nel mio swf dell'applicazione. Questo è lo stesso comportamento che vedo quando uso il build.xml di cui sopra, il che mi fa pensare che il file SWF sia in fase di costruzione con il collegamento del framework unito al codice (piuttosto che al collegamento RSL).

Una questione collegata a questo è come determinare se il mio swf sta usando RSL o meno. Immagino di poter vedere la dimensione dell'output compilato. Ma sembra che ci dovrebbe essere un modo per dire se sto usando il file di framework esterno o che viene inserito nel SWF in qualche modo, a mia insaputa.

risposta

6

Questo è un po 'difficile perché la documentazione è un po' scarsa su questo. Probabilmente hai bisogno di impostare la seguente opzione sulla riga di comando o su un file di configurazione.

statico-link-runtime-shared-libraries = falsi

La documentazione da Adobe fornisce la seguente descrizione un po 'criptico di quello che questa opzione fa.

Determina se eseguire la compilazione statica delle librerie o utilizzare RSL. Impostare questa opzione su true per ignorare le RSL specificate dall'opzione runtime-shared-library-path. Impostare questa opzione su false per utilizzare gli RSL. Il valore predefinito è true.

Questa opzione è utile per passare rapidamente da un'applicazione collegata staticamente a quella dinamica senza dover modificare l'opzione runtime-shared-library-path, che può essere dettagliata o modificare i file di configurazione.

Ecco un collegamento alla documentazione. "About the application compiler options"

Si noti che dalla documentazione il valore predefinito è true. TUTTAVIA, se si sta caricando un file flex-config.xml (predefinito o personalizzato), è necessario controllare anche se questa impostazione è presente in quel file e in che cosa consiste. Nella mia esperienza il valore predefinito per framework/flex-config.xml è in realtà falso. Sembra tuttavia che nell'esempio sopra questo possa essere impostato nell'altro modo.


(usiamo un sistema di generazione diversa rispetto ANT quindi non sono che la familiarità con la sintassi build.xml si avrebbe bisogno.)

+1

Io in realtà truffato per risolvere questo problema. Ho finito con l'utilizzo di [sourcemate] (http://www.elementriver.com/sourcemate) per esportare il mio progetto come un file di compilazione di formiche, quindi sono riuscito a far funzionare tutto.È stato molto più veloce del debug di ciò che Adobe si aspettava che inserissi nel mio file! – cybertoast

+2

Justin, ti sto dando la risposta giusta perché è nella giusta direzione. L'effettiva opzione è: . Grazie. – cybertoast

+0

Questo ha risolto il mio problema grazie, nel mio caso, usando formica per eseguire mxmlc come riga di comando, ho dovuto aggiungere Guian