Бесплатно скачать Adobe Flash Player

О том, как быстро исправлять ошибки во Flex 3 Framework (еще раз)

Представьте, что вы обнаруживаете в своем Flex-приложении баг, внесеный не вами, а разработчиками самого фреймворка. Ошибка явно находится в одном из "родных" классов. Вы даже знаете, как этот баг исправить, да вот как заставить Flex Builder это исправление подхватить без перекомпиляции всего фреймворка, ведь вы обычно работаете с уже готовым, представляющим фреймворк SWC-файлом типа 'framework.swc', а не c его исходным кодом, который так заманчиво доступен?

Чтобы быстро исправить ошибку Flex SDK для своего приложения, достаточно скопировать из фреймворка в свой проект соотвествующий файл класса с багом и разместить его в том же пакете. Например, класс mx.collections.Sort пойдет к вам в каталог src/mx/collections/Sort.as. Как правило, файлы классов включают также и дополнительный файл с версией фреймворка, так что скопируйте аналогичным образом и mx.core.Version.

Теперь ваш класс будет перекрывать оригинальный класс из Flex-фреймворка, и любые ваши изменения в этом классе войдут в приложение, как будто бы они были внесены в сам фреймворк.

Укрощение Flex-компилятора

Но есть еще одна хитрость, связанная с кэшированием при компиляции. Как известно, при включенном по умолчанию во Flex Builder параметре -incremental=true компилятор использует кэширование, чтобы сократить время компиляции. Поскольку вы уже наверняка компилировали свой проект, то скорее всего флекс-фреймворк уже в этом кэше и находится, что может помешать компилятору подхватить ваш класс, перекрывающий оригинальный. Кстати, обязательно почитайте о неожиданностях в поведении mxmlc-компилятора у Максима Качуровского и о том, как узнать параметры компиляции во Flex Builder у Александра Козловского.

Проблема легко решается, достаточно один раз "прогнать" проект через компилятор с отключенным кэшированием, а затем можно снова включить его. Чтобы отключить кэширование, зайдите в диалог свойств проекта Properties for [имя проекта] > Раздел Flex Compiler. Там в поле "Additional Compiler Arguments" добавьте через пробел один аргумент: -incremental=false и дайте проекту "сбилдиться". Затем вернитесь в этот же диалог и удалите добавленный параметр, таким образом вернув инкрементальную компиляцию по умолчанию.

Помог себе — выручи товарища

Используя описанную технику, можно спокойно исправлять досаждающе вам баги Flex. А если решитесь, то можно заслать свой патч с правками разработчикам самого Flex SDK, чтобы исправления были включены в следующие релизы. Adobe не только охотно принимает патчи, но и поощряет самых активных контрибьюторов. За каждые 3 принятые патча вам дадут любую книжку по продуктам Adobe из вашего виш-листа на Amazon. А тем двум, которые первыми сделают по 10 патчей, дают билет на Adobe MAX. Вот о том, как засылать патчи для Flex SDK.


Писал: Rost, 25 Июль 2008 19:58

Комментарии:



Подписаться на новости (RSS)




Примечания:
Статус документа
: в процессе
   2002-2009 Производство: Ростислав Сирык · О проекте · Подписка на новости (RSS)