33 коровы – Проблемы с Flash Builder 4 и Flex Library проектом - RIA разработка, Flex, Action Script, AIR, Eclipse, Monkey script

Проблемы с Flash Builder 4 и Flex Library проектом

October 15, 2009 – 1:15 pm

UPD: баг пофиксили, испарвление будет в новой версии, УРА!

На днях пришла необходимость попробовать перенести библиотеки с flex sdk 3.2 на flex sdk 4.  Заодно повтыкать в Flash Builder 4 и различные радости которые нам принес Gumbo.

Все было хорошо и ничто не предвещало беды ). После создания проекта компилятор сразу начал ругаться. “Почему бы и нет” – подумал я, ведь различия в сдк большие. Начал выяснять почему.

Первым сюрпризом было то, что он ругался на mxml класс, который обращался к AS классу лежащему в том же пакете. “Едить колотить, какая та лажа” – подумал я. И волевым движением руки добавил в mxml импорт,  этого нужного класса.

Потом выяснилось, что такая же проблема еще с несколькими mxml.  Ругая индусов я добавил импорт и в остальные классы. Вылез следующий такой же проблемный AS класс. Вставка импорта не помогла — данный класс бы internal. Скрипя душей и наплевав на хорошие манеры сделал класс public. Вылез следующий баг, mxml наследованный от mxml. И тут полностью приплыли, если навигатор нормально видет класс, нормально входит в него, то компилятор ругается.

Начал выдумывать почему такое происходит. Вариантов у меня было три:

  1. “Старый код”, В качестве базовых mxml классов используется mx:Canvas.
  2. Проблемы с неймспейсами.
  3. Я что то пропустил в этой жизни и изменился порядок создания библиотек.

Покапал в сторон “старых классов”, ничего! Нет никаких упоминаний о том что с ними, что-то нитак, поклацал галочки типа “Use Flex 3 compability”. Никаких результатов.

Поискал доки про изменения неймспейсов, плохого ничего не написано, никаких сложностей.

Библиотеки создаются стандартным образом, никаких шаманст ненужно.

Сделал тестовую библиотеку, неработает. Попробовал mxml без наследования, работает :) но меня это не спасает, использование классов в том же пакете без импорта не работает.

Поспрашивал у народа в чате UAFPUG. Никто ничего незнает. Дима попробывал несколько предложить несколько способов (пол мороженного лежит на полочке, ждет 😉 ).  Но они не повторяли мою проблему и не особо помогли. Затем Дима прислал пример с кукбук как создавать компоненты со своим неймспейсом. Повторил все операции описаные в статье, не работает! Ругается, что не может найти мой класс в моем неймспейсе. Почувствовал себя полным дебилом.

Одновременно со мной этой же проблемой занималась Татьяна Белоусова из команды Flexis. Она сказала, что если поставить опцию компилятора -keep-generated-actionscript то mxml классы генерятся и пачкой вываливаються в корень каталога generated, а имена пакетов пустые т.е. реально все mxml классы лежат в корневом пакете. после этого у меня осталось лишь 2 мысли, или я всетаки что то неправильно готовлю или это буг.

На bugs.adobe.com ничего похожего найти не смог (кошмар как сайт тормозит). Вернулся к варианту с неправильной готовкой.

Стянул проект с кукбука, запустил, все работает. Повторил снова все действия из кукбука, неработает. Проверил все настройки компилятора, неймспейсов — все совпадает, но не комплится. Копипастом перенес все в свой проект — неработает! К этому моменту я исчерпал практически весь запас ругательств. Попробовал убрать все описания кастомных неймспейсов, в настройке компилятора, библиотека с AS классом собралась. Добавил MXML — собралась, добавил наследника, естественно не собралась :).

Начал сравнивать вообще все галочки в примере и в моем проекте. Все одинакого. Перенес свои MXML в проект из кукбука, либа собралась, ни на что не ругалась, но и мои mxml не включила в проект. Полез в настройки библиотеки, пункт “Flex Library Build Path”, таб “Classes”, естетсвенно вновь появившиеся классы небыли включены в библиотеку, поставил галочки напротив них — либа нормально собралась, все классы сгенеренные из mxml разложились по нужным папочкам, package были розданы правильно. В этот момент, я почувствовал себя полным неудачником, ламером, человеком с погнутой кармой. Добавил еще несколько файлов, все отлично собирается и компилится. Затем еще пару, и тут мне надоело выставлять галочки напротив моих вновь созданых классов. И я подумал, какие клевые индусы, сделали такую офигенно-удобно-полезную переключалку “Include all classes from all sources path” (я еще в старых проектах не раз попадался когда вновь созданые классы не включались в либу) и я поспешил воспользоваться ей.

Всё. Всё перестало работать и вернулось на круги своя! Убрал галочку, все работает.
Убрал галочку протестил все мои нерабочие варианты, с наследованием mxml, с кастомными неймспейсами, с импортом. Всё работает.

Люди, вы понимаете, что это полная ЖОПА? Это полный маразм! Из-за левой, выставляемой по умолчанию, кажущейся мега удобной галочкой, которую не один здраво-ленивый человек не захочет просто так снимать (а если снимет, то только при важных обстоятельствах), я протрахался 2 дня! Я исчерпал все свои ругательства, заговоры, шаманства, волшебные слова и веру в людей. Если бы не пример. И если не случай(! просто неочевидное стечение обстоятельств), то я бы вообще ничего не собрал.


Не используйте пока эту опцию!
Не используйте пока эту опцию! Никогда, забудьте про нее или дождитесь релиза )

Поняв причину, я смог найти на bugs.adobe.com баги связаные с этой опцией (и я, как оказалось, повторил их все!). Подумав немного над возможной причиной я пришел к выводу, что все связано с неверной генерацией кода, так сказать первопричина. Поэтому я запостил баг FB-23453 в котором попытался описать первопричину.

  1. 3 Responses to “Проблемы с Flash Builder 4 и Flex Library проектом”

  2. Спасибо, что описал все свои страдания и создал баг в Adobe JIRA.

    Это действительно очень неприятный баг.

    Отдаю свой голос, пиарю в твиттере.

    By JabbyPanda on Oct 16, 2009

  3. Кстати, у бага https://bugs.adobe.com/jira/browse/FB-23288 priority A, хм неужели со времен выпуска Flash Builder 4 Beta 1 он никому не встречался?

    By JabbyPanda on Oct 16, 2009

  4. ogo) ne smeshno dazhe.
    v takih sluchajah mozhno esche probovat compilit cherez ant

    By mzx on Oct 28, 2009

Sorry, comments for this entry are closed at this time.



]]> rss о RIA от 33 Коровы
Забадать RSS!
]]>
~~~~~~