Нижепредставленный материал является дополнением к статье Алексея «Vooparker» Аникутина: "Компиляция совместимых с Flash CS3 swc-библиотек с помощью Flex 3 SDK", за которую ему огромное спасибо. Автор настоятельно рекомендует ознакомится с данной статьей.
Что такое SWC-библиотека?
SWC-библиотека - это библиотека классов с закрытым исходным кодом, которая хранится в файлах с расширением .swc. Также .swc-файлы используются для хранения отдельных компонентов, которые используются во Flash IDE.
Файлы с расширением .swc являются .zip-файлами, упакованными с помощью формата PKZIP. Внутри архива находится .swf-файл с классами, и catalogue.xml c описанием классов. Также в архив могут быть включены дополнительный файлы: картинки, .css-файлы и другие. Подробнее о формате .swc-файлов смотрите на Adobe.
SWC-библиотеки в основном используются в коммерческих проектах. Пользоваться ими легко (об этом ниже), а вот компилировать свои немного сложнее. В данной статье я рассмотрю компиляцию .swc-библиотек, на основе FlashDevelop.
Как компилировать .swc-библиотеку во FlashDevelop.
Подготовим среду разработки.
1. Компилировать .swc-файлы мы будем с использованием Flex Ant Tasks. Подробнее об этом смотрите в справке.
Для этого нам необходимо установить java-утилиту Apache Ant, которую можно скачать на официальном сайте: http://ant.apache.org/. Утилита распространяется в архиве, поэтому инсталлировать её нужно самостоятельно. Распакуйте корневую папку архива в любой каталог на локальном диске, желательно в "Program Files". Например, у меня - это "C:\Program Files\Apache\ant\1.7.1".
2. Перейдем к настройке FlashDevelop. В верхнем меню выбираем пункт "Tools", далее "Custom Arguments".
В появившемся окне внесем два пользовательских аргумента "FlexSDKDir" и "AntDir", в значениях которых пропишем пути соответственно. У меня получилось следующее:
Эти два аргумента нужны для нового типа проекта, который мы сейчас добавим.
Для этого скачиваем архив шаблонов проекта. Полученный архив нужно распаковать в директорию "Projects", которая находится в папке с установленным FlashDevelop. Например, у меня - это "C:\Program Files\FlashDevelop\Projects". Теперь после рестарта FlashDevelop,
в проектах у вас появится новый тип проекта "AS3 SWC Builder".
Попробуем что-нибудь скомпилировать.
Создаем новый проект типа "AS3 SWC Builder". В окне "Project" увидим следующее содержимое проекта:
Теперь перейдем к настройкам. Откроем файл compc-config.xml, который находится в папке "build", и в нем в теге , пропишем классы которые хотим включить в библиотеку.
Запускаем build.bat (нажатием F5), и в директории "bin" появится .swc-библиотека с классами, которые мы включили в неё.
Единственный вопрос остался у меня, на который я так и не нашел ответ: "Что за посторонний класс появляется при сборке .swc-файла?"
Может быть кто-то из читателей мне подскажет.
Дополнительная информация.
Возможно не всегда удобно использовать директорию "src", для хранения исходных классов. Вы можете изменить директорию с исходными классами в файле build.xml в свойстве output.dir
Также если вы хотите чтобы ваша .swc-библиотека была совместима с Flash CS3, нужно прописать классы еще в одном файле manifest.xml, следующим образом:
Более подробно о дополнительных возможностях вы можете узнать в официальной справке Adobe:
Как использовать .swc-библиотеку в AS3-проекте?
Использовать .swc-библиотеку в AS3-проекте достаточно легко. Необходимо перенести .swc-файл в директорию "lib", нажать на файле правой кнопкой и в "Add To Library" поставить галочку.
Теперь вы можете использовать классы библиотеки, также как и классы, которые находятся в директории "src".
Смотрите также:
Что такое SWC-библиотека?
SWC-библиотека - это библиотека классов с закрытым исходным кодом, которая хранится в файлах с расширением .swc. Также .swc-файлы используются для хранения отдельных компонентов, которые используются во Flash IDE.
Файлы с расширением .swc являются .zip-файлами, упакованными с помощью формата PKZIP. Внутри архива находится .swf-файл с классами, и catalogue.xml c описанием классов. Также в архив могут быть включены дополнительный файлы: картинки, .css-файлы и другие. Подробнее о формате .swc-файлов смотрите на Adobe.
SWC-библиотеки в основном используются в коммерческих проектах. Пользоваться ими легко (об этом ниже), а вот компилировать свои немного сложнее. В данной статье я рассмотрю компиляцию .swc-библиотек, на основе FlashDevelop.
Как компилировать .swc-библиотеку во FlashDevelop.
Подготовим среду разработки.
1. Компилировать .swc-файлы мы будем с использованием Flex Ant Tasks. Подробнее об этом смотрите в справке.
Для этого нам необходимо установить java-утилиту Apache Ant, которую можно скачать на официальном сайте: http://ant.apache.org/. Утилита распространяется в архиве, поэтому инсталлировать её нужно самостоятельно. Распакуйте корневую папку архива в любой каталог на локальном диске, желательно в "Program Files". Например, у меня - это "C:\Program Files\Apache\ant\1.7.1".
2. Перейдем к настройке FlashDevelop. В верхнем меню выбираем пункт "Tools", далее "Custom Arguments".

В появившемся окне внесем два пользовательских аргумента "FlexSDKDir" и "AntDir", в значениях которых пропишем пути соответственно. У меня получилось следующее:


Эти два аргумента нужны для нового типа проекта, который мы сейчас добавим.
Для этого скачиваем архив шаблонов проекта. Полученный архив нужно распаковать в директорию "Projects", которая находится в папке с установленным FlashDevelop. Например, у меня - это "C:\Program Files\FlashDevelop\Projects". Теперь после рестарта FlashDevelop,

в проектах у вас появится новый тип проекта "AS3 SWC Builder".

Попробуем что-нибудь скомпилировать.
Создаем новый проект типа "AS3 SWC Builder". В окне "Project" увидим следующее содержимое проекта:

- bin - директория, в которой будет находится скомпилированный.swc-файл.
- build - здесь, находятся файлы с настройками компиляции.
- src - из этой папки будут браться классы, которые мы будем зашивать в нашу .swc-библиотеку.
- build.bat - файл который запускает сборку (компиляцию) библиотеки.

Теперь перейдем к настройкам. Откроем файл compc-config.xml, который находится в папке "build", и в нем в теге
<include-classes> <class>ru.as3coder.AS3CoderLibclass> <class>ru.as3coder.geom.Lengthclass> <class>ru.as3coder.graph.Edgeclass> <class>ru.as3coder.graph.Graphclass> <class>ru.as3coder.graph.GraphMethodsclass> <class>ru.as3coder.graph.Vertexclass> </include-classes>
Запускаем build.bat (нажатием F5), и в директории "bin" появится .swc-библиотека с классами, которые мы включили в неё.

Единственный вопрос остался у меня, на который я так и не нашел ответ: "Что за посторонний класс появляется при сборке .swc-файла?"

Может быть кто-то из читателей мне подскажет.
Дополнительная информация.
Возможно не всегда удобно использовать директорию "src", для хранения исходных классов. Вы можете изменить директорию с исходными классами в файле build.xml в свойстве output.dir
<property name="source.dir" value="${basedir}/src" />
Также если вы хотите чтобы ваша .swc-библиотека была совместима с Flash CS3, нужно прописать классы еще в одном файле manifest.xml, следующим образом:
<componentPackage> <component id="AS3CoderLib" class="ru.as3coder.AS3CoderLib" /> <component id="Length" class="ru.as3coder.geom.Length" /> <component id="Graph" class="ru.as3coder.graph.Graph" /> <component id="Edge" class="ru.as3coder.graph.Edge" /> <component id="Vertex" class="ru.as3coder.graph.Vertex" /> <component id="GraphMethods" class="ru.as3coder.graph.GraphMethods" /> </componentPackage>
Более подробно о дополнительных возможностях вы можете узнать в официальной справке Adobe:
Как использовать .swc-библиотеку в AS3-проекте?
Использовать .swc-библиотеку в AS3-проекте достаточно легко. Необходимо перенести .swc-файл в директорию "lib", нажать на файле правой кнопкой и в "Add To Library" поставить галочку.

Теперь вы можете использовать классы библиотеки, также как и классы, которые находятся в директории "src".

Смотрите также:
Ещё был где-то к ФД плугин, который добавлял в панель инструментов кнопочку, по нажатии которой генерилась библиотека из файлов любого АС3 проекта. Весчь рабочая, только частенько сыпет ексепшены, чем изрядно мешает работать.
ОтветитьУдалитьДа, есть и плагин. Называется "ExportSWC". Hо пользоваться им у меня не получилось. Поэтому пришлось придумывать своё решение.
ОтветитьУдалитьЕсли кому-то интересно попробовать компилировать .swc-файл с помощью плагина, то ознакомиться с ним можно здесь и здесь.
"Что за посторонний класс появляется при сборке .swc-файла?"
ОтветитьУдалитьЕсли собирать с помощью FlexSDK 3.3, этот класс не появится при сборке. При сборке версиями 3.4 и 3.5 то он появляется. Что это за класс я не нашел ответа (
Понятно :) Спасибо за информацию.
ОтветитьУдалитьПочему-то проблемы с компиляцией если точки в названиях папок. И переменные среды удаляются, то ли из-за рестарта, а не закрытия, то ли из-за UAC. Полчаса мучений и первая библиотека готова, спс:)
ОтветитьУдалитьУ меня вот такая ошибка, что это значит?
ОтветитьУдалитьD:\FLASH LAB\awaysintswc>"$(AntDir)\ant" -lib "$(FlexSDKDir)\ant\lib\flexTasks.jar" -buildfile "build\build.xml" main
‘Ёб⥬Ґ Ґ г¤ Ґвбп ©вЁ гЄ § л© Їгвм.
Build halted with errors.
Done (1)
как добавить в swc библиотеку другие форматы файлов например: .jpg, .dae, .mp3?
ОтветитьУдалитьА вы кастомные аргументы FlexSDKDir и AntDir прописали?
ОтветитьУдалитьвсё получилось, просто в новом FlexSDK путь к playerglobal.swc чуть-чуть другой
ОтветитьУдалитьв сcompc-config.xml в строке @flex.sdk.dir@/frameworks/libs/player/10/playerglobal.swc
нужно было поменять название директории ../10/.. на /10.0/ и всё пошло.
Но есть ещё вопрос, я слышал, что в SWC можно запихать файлы любого формата, как это сделать? Мне нужно встроить в swc несколько .jpg и .dae файлов...
В официальной справке по Flex имеется соответствующий раздел «Adding utility classes», но прокомментировать я его не могу :( Никогда не зашивал в .swc-библиотеки что-то кроме .as-файлов
ОтветитьУдалить%( не появляется swc файл, ругается так:
ОтветитьУдалитьcompile.swc:
[copy] Copying 1 file to C:\PROJECTS2010\chartSWC\bin
[exec] Error loading: C:\Program Files\Java\jre6\bin\client\jvm.dll
[exec] Result: 6
[delete] Deleting: C:\PROJECTS2010\chartSWC\bin\compc-config.xml
BUILD SUCCESSFUL
Что-то не так с Java Virtual Machine.
ОтветитьУдалитьПроверьте наличие установленной Java Runtime Environment и утилиты Apache Ant.
спасибо за статью, интересненько.Есть 1 просьба.Выложи свои файлы *.as, это потому что ты пишешь:"Перенесем в директорию "src" необходимые нам .as-файлы. Например, мои:", а файлов то нету.Спасибо.
ОтветитьУдалитьСпасибо очень полезная статья. Наконец смогу собрать все исходники в библиотеку.
ОтветитьУдалитьЕдинственный вопрос остался у меня, на который я так и не нашел ответ: "Что за посторонний класс появляется при сборке .swc-файла?"
ОтветитьУдалитьэто очень похоже на класс, о котором идет речь вот здесь: http://www.flasher.ru/forum/blog.php?b=281
Можно ли в библотеку .swc помещать компоненты Flex mxml?
ОтветитьУдалитьНе получается скомпилировать. Ошибка в файле compc-config.xml: При установке переменной "" произошло исключение "org.xml.sax.SAXParseException; lineNumber: 8; columnNumber: 38; Недопустимый байт 2 в 2-байтной последовательности UTF-8." Сама строчка выглядит таким образом: @source.dir@
ОтветитьУдалитьНичего не менялось, просто создал новый проект.