Flex linking: почему размер моего SWF-файла меньше суммы его SWC-файла? - PullRequest
1 голос
/ 24 июня 2009

Вот тупой вопрос. Я компилирую свое Flex-приложение с несколькими SWC-файлами (библиотеками), и оно создает SWF-файл. Сумма SWC составляет примерно 4 МБ, а фактический SWF - всего 1,6 МБ. Как это возможно?

Спасибо!

Ответы [ 3 ]

6 голосов
/ 24 июня 2009

Компилятор компилирует только те классы из swc, которые нужны вашему приложению, если вы не укажете, какие классы вы хотите «встраивать». Отсюда меньший размер swf в конце.

2 голосов
/ 25 июня 2009

Чтобы немного расширить ответ PeZ, обычно SWC-файлы предоставляются компилятору приложения Flex с использованием аргумента компилятора "library-path":

элемент пути к библиотеке [...]

Связывает SWC-файлы с результирующим SWF-файлом приложения. Компилятор только ссылки в тех классах для файла SWC, которые требуются. Вы можете указать каталог или отдельные файлы SWC.

Вместо этого вы можете использовать «include-library»:

библиотека include-library [...]

Связывает все классы в SWC-файле с результирующим SWF-файлом приложения, независимо от того, используются они или нет.

Сравните эту опцию с опцией library-path, которая включает только те классы, на которые есть ссылки во время компиляции.

Обычно вы хотите использовать «путь к библиотеке», чтобы размер вашего SWF-файла был как можно меньше. Однако вам может понадобиться использовать «include-library», если ваше приложение создает экземпляры классов из SWC только путем отражения. Поскольку эти классы на самом деле не связаны с приложением, они не будут включены, если вы будете использовать «путь к библиотеке» для ссылки на SWC, и вы получите ошибку времени выполнения во время создания экземпляра, так как тип недоступен. Однако, если вы используете «include-library», класс (и все другие классы в SWC) будут доступны приложению.

0 голосов
/ 25 июня 2009

1) в SWF-файл включены только обязательные классы
2) больше файлов приводит к дополнительной информации заголовка, которая также немного увеличит размер.
Чтобы уменьшить размер flex swf, вы можете использовать эти методы, упомянутые в этой статье:
http://askmeflash.com/article_m.php?p=article&id=9

...