Как создать библиотеку Flex, совместимую с клиентскими приложениями, начиная от Flex 3.5B до Flex 4.6?

Моя цель - создать библиотеку Flex, совместимую с клиентами (как другими библиотеками, так и приложениями Flex), основанными на версиях Flex в диапазоне от 3.5B до 4.6. Кроме того, я хотел бы иметь возможность использовать функциональность последней версии Flex в моей библиотеке, хотя это является второстепенной проблемой по сравнению с совместимостью.

Нужно ли использовать версию Flex не более 3,5В?

Особая трудность, с которой я сталкиваюсь с 3.5B, заключается в том, что когда я статически связываю Flex с моей библиотекой и использую его в проекте Flex 4.5.1A, он терпит неудачу с некоторой ошибкой времени компиляции, такой как 1044: Interface method get baseline in namespace mx.core:ILayoutElement not implemented by class panels:BasePanel.

Совместное использование во время выполнения, кажется, несколько решает проблему. Когда я компилирую библиотеку для Flex 3.5B с RSL из набора Flex, она создает swc, который аккуратно компилируется в моем проекте 4.5.1A и в основном работает, но мне неудобно из-за того, что опция static не работает. Мне кажется, что связывание во время выполнения таким способом кажется странным, поскольку проект, созданный с помощью Flex 3, связан с исполнением во время исполнения с Flex 4 (любой, почему связывание во время исполнения не вызывает таких же жалоб интерфейса?).

Связывание во время выполнения выглядит настолько гибким (а именно, я могу даже построить свой оригинальный проект с 4.6 и просто быть очень осторожным, чтобы не использовать функциональность до 4.6 и использовать ее в проекте 3.5), что мне неудобно с моим текущим уровнем понимание.

1 ответ

Решение

Нужно ли использовать версию Flex не более 3,5В?

Многое меняется в классах Flex Framework между версиями. Таким образом, единственный способ гарантировать, что SWC будет работать для нескольких версий Flex SDK, - не иметь зависимостей от Flex SDK.

Создание библиотеки SWC с зависимостями Flex во Flex 3.5B не обязательно будет работать во Flex 4, Flex 4.5 или Flex 4.6.

У меня было много проблем с нашими коммерческими компонентами. Возьмите AutoCompleteComboBox, как один из примеров. В настоящее время у нас есть 5 различных версий (Flex 3, Flex 3.2, Flex 3.5, Flex 4 и Flex 4.5). Каждая версия имеет исправления ошибок, специфичные для этой версии SDK. Flex 3.5 был полностью переписан для компонента из-за значительных изменений в Flex ComboBox, который расширяет наш компонент.

Кроме того, если вы используете библиотеку, скомпилированную с версией Flex SDK, отличной от вашей текущей версии, иногда компилятор Flex выдаст "странные" ошибки компиляции, которые решаются путем перекомпиляции вашей библиотеки с той же версией SDK, что и у вашего основного приложения., Я думаю, это именно то, что вы видите.

Таким образом, ответ таков: если вы хотите использовать SWC с проектами, созданными для нескольких версий Flex SDK, единственный способ гарантировать совместимость состоит в том, чтобы не иметь зависимостей от Flex SDK в вашем SWC.

Другие вопросы по тегам