2011-02-23 2 views
0

J'utilise un swc du projet Axiis pour afficher des visualisations dans un projet sur lequel je travaille. J'ai rencontré un bug où recompiler la bibliothèque swc serait une solution facile, mais je ne peux utiliser que la version boguée du swc.Comment modifier un singe ou remplacer une classe swc dans Flex?

J'ai la source Axiis et compilé une version avec le bogue corrigé, bien que je ne sois pas autorisé à l'utiliser en raison des restrictions de version du client.

Est-ce que quelqu'un sait comment je peux utiliser la classe/le fichier Actionscript mis à jour dans mon code afin qu'il remplace la classe swc?

+0

Par restrictions "client", voulez-vous dire les restrictions dans Flash Player? Ou des restrictions de l'entité vous payez pour développer? Si ce dernier je suis choqué que le code de recompilation est faux, mais le patch de singe est bon. Ce ne sont que deux manières différentes d'utiliser le même code. L'un est «propre» et l'autre est un hack. – JeffryHouser

+0

ouais client par personne me payer pour faire l'application, et un processus de révision pour une nouvelle construction par lui-même prendrait des mois. Je cherche un hack pour l'instant jusqu'à ce que je puisse obtenir la nouvelle bibliothèque approuvée. – wajiw

+0

hi @Flextras, je travaille avec Wa-jiw, d'accord c'est un hack mais parfois swcs obtenir l'approbation pour nous basé sur des tests et nous ne sommes pas autorisés à modifier le swc mais peut utiliser le déjà testé (même si elle a des bugs). Nous avions déjà essayé ce que Christophe suggérait mais le problème est que le code en cours de redéploiement est dans une classe non référencée directement de l'application (le problème est essentiellement de 3/4 compatibilité, swc original a été écrit pour 3 et maintenant utilisé en 4, axiis), même en faisant référence à la classe modifiée et en la recompilant, les classes swc semblent utiliser l'ancienne. thx – shaunhusain

Répondre

4

Je ne suis pas sûr si vous êtes autorisé à faire ce qui suit: mettre la classe avec votre correctif dans le chemin source de votre application principale. Si vous vous assurez que les noms de package et de classe correspondent exactement à la classe d'origine, le compilateur sélectionne cette classe au lieu de celle de la bibliothèque. Nous le faisons souvent lorsque nous voulons patcher le framework Flex sans avoir à compiler les bibliothèques nous-mêmes.

Une autre idée pourrait être d'utiliser AS3Commons-Bytecode pour créer un proxy de la classe que vous voulez corriger et ensuite faire fonctionner votre code sur le proxy au lieu de l'instance d'origine. C'est une solution d'exécution pure. C'est un peu plus avancé et cela ne fonctionnera que si vous pouvez obtenir le proxy pour remplacer l'instance d'origine de la classe que vous devez corriger.

+0

votre première suggestion est la première chose que nous avons essayé, mais nous n'avons pas réussi à le faire fonctionner. Y at-il quelque chose de spécial dans les propriétés que vous avez à faire pour le faire fonctionner? Pas sûr que Bytecode vaille la peine de le faire fonctionner ... – wajiw

+0

Nous ne faisons rien de spécial pour y parvenir. Tout ce que nous faisons est de placer la classe dans le chemin source principal et d'avoir une dépendance de la bibliothèque sur la bibliothèque qui contient la classe que nous voulons patcher. –

+0

@wajiw Si vous ne voulez pas travailler parce que l'assistant de création de classe ne vous permet pas de créer une classe existante, vous pouvez simplement aller dans le dossier du paquet et le créer manuellement, le compilateur le prendra sans problème. – Cotton

Questions connexes