2012
Это первая заметка из небольшой серии, посвященной сборке, подключению и использованию swc-библиотек. Особено актуально для тех, кто собирается разрабатывать мобильные приложения под iOS, но об этом позже
Азы и простые примеры.
SWC – скомпилированая библиотека. Часто используемые классы или сотня-другая картинок/звуков, собранных в один swc файл, можно повторно использовать в других проектах, или, например, раздать тестерам =) При этом исходные коды останутся в одном месте. В SWC можно скомпилировать файлы переводов для добавления в приложение многоязычности, или таблицу стилей – тогда полученный swc можно будет использовать как основную или дополнительную тему в приложении.
SWC создается при помощи компилятора compc. Для автоматизации сборки SWC и приложений будем использовать Apache Ant.
Сборка SWC:
<target name="buildSWC">
<compc output="${basedir}/swc/MyLib.swc" keep-generated-actionscript="false" incremental="false">
<source-path path-element="${dir.src}" />
<!-- Включить все .as файлы из данной директории -->
<include-sources dir="${dir.src}/app/utils/" includes="*.as" />
<!-- Включить все файлы из данной директории и поддиректорий -->
<include-sources dir="${dir.src}/app/comps/" includes="*" />
<!-- Включение класса -->
<include-classes />
<!-- Включить из конфиг-файла. По сути тоже самое, но в отдельном файле -->
<load-config filename="${basedir}/build/classes-list.xml"/>
</compc>
</target>
classes-list.xml
<?xml version="1.0" encoding="utf-8" ?> <flex-config> <include-classes> <class>app.events.MyEvent</class> <class>app.comps.Button</class> </include-classes> </flex-config>
SWC с файлами локализации:
<target name="buildSWC-locale">
<compc output="${basedir}/swc/locale.swc">
<locale>ru_RU</locale>
<!-- Путь к директории с локалями -->
<source-path path-element="${dir.src}/locale"/>
<!-- Имя подключаемой локали (одной или более) -->
<include-resource-bundles>Resources</include-resource-bundles>
</compc>
</target>
Файл Resources.properties:
AppTitle = Заголовок HelloMsg = Превед!
В случае если надо надо несколько языков иметь в одном файле:
<target name="buildSWC-locale">
<compc output="${dir.lib}/locale.swc" allow-source-path-overlap="true">
<locale>en_US</locale>
<locale>ru_RU</locale>
<source-path path-element="${dir.src}/locale/{locale}"/>
<include-resource-bundles>Resources</include-resource-bundles>
</compc>
</target>
Компилятор будет поочередно перебирать локали и подставлять их вместо {locale}.
И в данном случае надо будет добавить опцию allow-source-path-overlap=”true”.
SWC файл со стилями:
<target name="buildSWC-styles">
<compc output="${basedir}/swc/style.swc">
<include-file name="MyStyles.css" path="${dir.src}\css\MyStyles.css" />
</compc>
</target>
Полезные ссылки:
Adobe: About SWC files
Adobe: Understanding SWC files
Adobe: Using the compc task
Adobe: Creating resources
Adobe: Using resource modules
Adobe: Easily compile resource bundles using Ant
Adobe: Compiling a theme SWC file
Делаем правильные swc библиотеки