2009-07-17 23 views
3

J'ai une bibliothèque de code que j'ai créée. Il repose sur 2 autres bibliothèques (tierces). À l'heure actuelle, lorsque je compile la bibliothèque dans un swc, les deux bibliothèques tierces sont incluses. Je cherche un moyen de compiler ma bibliothèque de code contre les bibliothèques tierces, mais sans les inclure dans le swc compilé.Compiler un fichier SWC à l'aide de COMPC, à l'exclusion des bibliothèques tierces

Cela signifierait évidemment que toute personne utilisant ma bibliothèque aurait également besoin des deux bibliothèques, mais je préférerais que cela se fasse de cette façon. Je n'utilise pas Flex/Flashbuilder qui, je le sais, vous permet de choisir les classes à inclure dans un swc.

Merci

Répondre

6

-external-library-path + = my.swc est la réponse, bien qu'il ne soit pas nécessaire d'utiliser -runtime-shared-libraries. L'utilisation de cet argument vous permet de spécifier le code qui sera utilisé dans la compilation mais qui ne sera pas placé dans le swc. Évidemment, ce clone exclu sera toujours nécessaire lorsque le swc est utilisé.

Notons en particulier que contrairement aux autres arguments, -external-library-path utilise + = not =. En utilisant just = vous allez casser la référence aux classes de bas niveau des joueurs et à toutes les autres bibliothèques externes ajoutées.

Si vous utilisez FlexTasks w/Ant, votre cible pourrait ressembler à ceci:

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

Vous pouvez également pointer-chemin bibliothèque externe vers un dossier auquel cas il comprendra tous swcs à l'intérieur. Notez que si vous suivez les consignes FlexTasks d'Adobe et placez le fichier flexTasks.jar dans votre dossier libs et que vous le ciblez en tant que dossier en utilisant external-library-path, le fichier flexTasks.jar est lui-même exclu, provoquant l'échec de la génération. Pour résoudre ce problème, placez flexTasks.jar dans un dossier séparé ou ciblez directement vos swcs comme dans l'exemple ci-dessus

0

Je ne pense pas que vous pouvez juste besoin que quelqu'un d'autre a les dépendances. Il pourrait utiliser les bibliothèques tierces en tant que bibliothèques partagées Runtime, vous aurez besoin des bibliothèques tierces disponibles sur l'URL et utiliser ce qui suit lors de la compilation -runtime-shared-libraries=http://www.yourhost.com/my.swf -external-library-path+=my.swc. Voir le Adobe docs for full details about RSLs