2009-07-17 4 views
3

Ich habe eine Code-Bibliothek, die ich gebaut habe. Es beruht auf 2 anderen (Drittanbieter-) Bibliotheken. Im Moment, wenn ich die Bibliothek in eine SWC kompiliere, sind beide Bibliotheken von Drittanbietern enthalten. Ich suche nach einer Möglichkeit, meine Code-Bibliothek gegen die Bibliotheken von Drittanbietern zu kompilieren, aber ohne sie in der kompilierten SWC einzuschließen.Kompilieren Sie eine SWC mit COMPC, ausgenommen 3rd-Party-Bibliotheken

Das würde natürlich bedeuten, dass jeder, der meine Bibliothek benutzt, beide Bibliotheken benötigt, aber ich würde es auf diese Weise bevorzugen. Ich verwende nicht Flex/Flashbuilder, von dem ich weiß, dass Sie die Klassen auswählen können, die in einer swc enthalten sind.

Dank

Antwort

6

-external-Bibliothek-Pfad + = my.swc ist die Antwort, obwohl es keine Notwendigkeit für die Verwendung von -runtime-shared-libraries. Mit diesem Argument können Sie Code angeben, der bei der Kompilierung verwendet, aber nicht in die swc eingefügt wird. Offensichtlich wird dieser ausgeschlossene Clode immer noch benötigt, wenn der swc verwendet wird.

Von besonderer Bedeutung ist, dass im Gegensatz zu anderen Argumenten, -externer-Bibliothek-Pfad verwendet + = nicht =. Wenn Sie just = verwenden, wird der Verweis auf die Low-Level-Klassen der Spieler und alle anderen hinzugefügten externen Bibliotheken aufgehoben.

Wenn Sie mit FlexTasks w/Ant, könnte Ihr Ziel wie folgt aussehen:

<target name="compileToSWC"> 
    <compc 
     output="${bin}/${SWCName}"> 
      <source-path path-element="${src}"/> 
      <!-- Source to include in SWC --> 
      <include-sources dir="${src}" includes="*"/> 
      <!-- Libs to exclude from the swc - Note append="true" which is equivillant to using +=--> 
      <external-library-path file="${thirdparty.libs}/SomeLib.swc" append="true"/> 
      <external-library-path file="${thirdparty.libs}/SomeOtherLib.swc" append="true"/> 
    </compc> 
</target> 

Sie können auch externe-Bibliothek-Pfad zu einem Ordner verweisen in diesem Fall werden alle swcs innen umfassen. Beachten Sie, dass wenn Sie die FlexTasks-Richtlinien von Adobe befolgen und die Datei flexTasks.jar in Ihren libs-Ordner platzieren und als Ordner mithilfe von external-library-path als Ziel festlegen, wird die Datei flexTasks.jar selbst ausgeschlossen, wodurch der Build fehlschlägt. Um dies zu lösen, legen Sie entweder die Datei "flexTasks.jar" in einem separaten Ordner ab oder richten Sie Ihre swcs direkt wie im obigen Beispiel

0

Ich glaube nicht, dass Sie nur verlangen kann, dass jemand anderes die Abhängigkeiten hat. Es könnte die Bibliotheken von Drittanbietern als Runtime Shared Libraries verwenden, Sie benötigen die Bibliotheken von Drittanbietern, die in der URL verfügbar sind, und verwenden Sie Folgendes beim Kompilieren von -runtime-shared-libraries=http://www.yourhost.com/my.swf -external-library-path+=my.swc. Siehe die Adobe docs for full details about RSLs

Verwandte Themen