2010-11-01 14 views
5

Ich versuche, meine flex 4-Projekt mit ant zu bauen. In Flash Builder 4 ist es in Projekteigenschaften möglich, die "Framework-Verknüpfung" auf "In Code zusammengeführt", "Runtime Shared Library (RSL)" oder "Use SDK Default (Runtime Shared Library)" zu setzen. Wie kann ich das Äquivalent als mxmlc Optionen in build.xml einstellen?mxmlc und Framework-Verknüpfung - wie Verknüpfung als rsl

sieht Mein aktueller build.xml wie folgt aus:

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

ich davon aus, dass die Laufzeit-shared-library-path-Richtlinie Einstellung und das Kopieren des Rahmens swf, würde SWZ-Dateien in meine Zielordner Dinge funktionieren, aber das scheint nicht der Fall zu sein.

Die Art, wie ich das bewerte, ist wie folgt: Ich verwende einen benutzerdefinierten Preloader, und damit es funktioniert, brauche ich Framework-Verknüpfung als RSL. Mit "in Code zusammengeführt" bleibt mein Preloader an einem bestimmten Punkt stecken und geht nicht zu meiner Anwendung swf. Dies ist das gleiche Verhalten, das ich sehe, wenn ich die obige build.xml benutze, was mich glauben lässt, dass die SWF mit einer Framework-Verknüpfung erstellt wird, die in Code zusammengeführt wird (anstatt RSL-verknüpft).

Eine verwandte Frage dazu ist, wie zu bestimmen, ob mein swf RSL verwendet oder nicht. Ich denke, ich könnte die Größe der kompilierten Ausgabe betrachten. Aber es scheint, dass es eine Möglichkeit geben sollte, zu sagen, ob ich die externe Framework-Datei verwende oder ob sie ohne mein Wissen in die SWF-Datei eingebunden wird.

Antwort

6

Dies ist ein wenig schwierig, weil die Dokumentation ein wenig knapp ist. Wahrscheinlich müssen Sie die folgende Option entweder in der Befehlszeile oder in einer Konfigurationsdatei festlegen.

static-link-Runtime-Shared-Bibliotheken = false

Die Dokumentation von Adobe gibt die folgende etwas kryptische Beschreibung das, was diese Option tut.

Legt fest, ob statische Bibliotheken kompiliert oder RSLs verwendet werden. Setzen Sie diese Option auf true, um die RSLs zu ignorieren, die von der Option runtime-shared-library-path angegeben wurden. Setzen Sie diese Option auf false, um die RSLs zu verwenden. Der Standardwert ist wahr.

Diese Option ist nützlich, damit Sie schnell zwischen einer statisch und dynamisch verknüpften Anwendung wechseln können, ohne die Option runtime-shared-library-path ändern zu müssen, die ausführlich sein oder die Konfigurationsdateien bearbeiten kann.

Hier ist ein Link zur Dokumentation. "About the application compiler options"

Beachten Sie, dass aus der Dokumentation der Standardwert True ist. Wenn Sie jedoch eine Datei "flex-config.xml" laden (Standard oder benutzerdefiniert), sollten Sie auch prüfen, ob diese Einstellung in dieser Datei vorhanden ist und was sie ist. Nach meiner Erfahrung ist der Standardwert für die Frameworks/flex-config.xml eigentlich falsch. Es scheint jedoch, dass im obigen Beispiel dies in die andere Richtung gesetzt werden kann.


(Wir verwenden ein anderes Build-System als ANT so bin ich nicht so vertraut mit der build.xml Syntax, die Sie benötigen würden.)

+1

ich betrogen tatsächlich dieses Problem zu lösen. Am Ende habe ich [quellemate] (http://www.elementriver.com/sourcemate) benutzt, um mein Projekt als Ameisen-Build-Datei zu exportieren, und dann konnte alles funktionieren.Es war viel schneller als das Debuggen, was Adobe von mir erwartet hatte. – cybertoast

+2

Justin, ich gebe dir die richtige Antwort, weil es in die richtige Richtung geht. Die tatsächliche Option ist: . Vielen Dank. – cybertoast

+0

Das behebt mein Problem thx, in meinem Fall, mit ant, um die mxmlc als Befehlszeile auszuführen, musste ich hinzufügen – Guian

Verwandte Themen