Вообще тема ANT + Flash очень неплохо раскрыта там, сям. Но тем не менее при личном освоении, некоторые проблемы были мной встречены, и так же героически преодолены. К тому же основная русскоязычная статья от Константинера http://constantiner.blogspot.com/2006/02/flash-apache-ant-new-media.html, на которую есть даже линк на Википедии, технически несколько усторела.
Главная цель — запустить сборку простенького проекта ANT-ом. Начнем.
Настройка среды
- скачать, установить ant (http://ant.apache.org/);
- еще для запуска ANT понадобиться JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html (который у вас уже есть если стоит Flash Builder);
- настроить путь к ANT, через PATH (добавляем переменную среды JAVA_HOME=<где находится javac>, компилятор Java. Как это делать в винде: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/environment_variables.mspx?mfr=true );
- скачать Flex SDK (если нет) (http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK);
- добавляем в ANT возможность выполнения инструкций Flex SDK компилятора: в ant\lib сбросить
\ant\lib\flexTasks.jar ;
запуск первого билда
создаем проект
Структура проекта следующая:\src Main.as build.xml local.propertiesMain.as Основной файл проекта.
package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; /** * * @project Experiment Simple Ant * * @data Jul 27, 2011 / 7:30:12 AM * * @author Eugene Krevents aka Hyzhak * */ public class Main extends Sprite { //---------------------------------- // constructor //---------------------------------- public function Main() { var tf:TextField = new TextField(); tf.text = "Hello World of ANT!"; tf.autoSize = TextFieldAutoSize.RIGHT; addChild(tf); } } }build.xml Инструкции для ANT каким образом собрать проект
<!--?xml version="1.0" encoding="UTF-8"?--> <project name="hello ant world!" default="build" basedir="."> <!-- Подключение локальных параметров среды --> <property file="local.properties"/> <!-- Рассказываем ANT о таких задачах как mxmlc, и др. --> <property name="flex.config" location="${FLEX_HOME}\frameworks\flex-config.xml"/> <property name="flex.frameworks" location="${FLEX_HOME}\frameworks"/> <taskdef file="${FLEX_HOME}/ant/flexTasks.tasks" classpath="${FLEX_HOME}/ant/lib/flexTasks.jar"/> <!-- Исходники тут --> <property name="src" location="src"/> <!-- Имя главного файла --> <property name="main.file" value="Main.as"/> <!-- И путь к нему --> <property name="full.src.path" location="${src}/${main.file}"/> <!-- Результирующий файл --> <property name="output.swf" location="main.swf"/> <!-- Главная задача, вызываемая при сборке "по-умолчанию" --> <target name="build"> <mxmlc file="${full.src.path}" output="${output.swf}" keep-generated-actionscript="false"> <static-link-runtime-shared-libraries>true</static-link-runtime-shared-libraries/> </mxmlc> </target> </project>local.properties Локальные настройки системы
#local.properties FLEX_HOME=d:/Program Files (x86)/Adobe/Adobe Flash Builder 4.5/sdks/4.5.1Все готово, чтобы запустить сборку необходимо вызвать в командной строке ant. Должно получиться приблизительно следующее: и появиться скомпилированный файл: main.swf Возможно что-то может пойти не так, к примеру:
Исправить вопросики в mxmlc. Чтобы mxmlc говорил на английском
На этот счет в и-нете масса советов:- http://onenterframe.ru/2011/03/24/как-исправить-вопросики-от-mxmlc/
что-то мне не сильно помогло :( - добавить -Duser.language=en -Duser.country=US в:
* $FLEX_HOME/bin/jvm.config
* $FLEX_HOME/bin/mxmlc - добавить в в качестве параметра: -tools-locale=en — помогло отчасти, половину (!) error-ов mxmlc стал выдавать на английском;
- и лишь один способ мне помог, спасибо Ростику (flash-ripper.net):
Панель управления / Язык и региональные стандарты / Формат, устанавливается: «Английский (Великобритания)» (можно и любой другой, главное Английский).
Не срабатывает Embed файлов
Проблема была связана с тем? что среда Flash Builder достаточно лояльно относилась к декларации типа:[Embed(source="assets/level.xml", mimeType="application/octet-stream")] private static const LevelsClass:Class;в то время как при компиляции с помощью ant нужно было добавить перед assets еще один «/»:
[Embed(source="/assets/level.xml", mimeType="application/octet-stream")] private static const LevelsClass:Class;
Подключение папок с файлами проекта
Добавить вПодключение swc
Добавить в<library-path dir="/libs" append="true"> <include name="*.swc"/> </library-path>
добавление автоинкримента билд версии
<!-- - - - - - - - - - - - - - - - - - target: increment - - - - - - - - - - - - - - - - - --> <target name="increment"> <!-- увеличить номер версии (свойство build.number) в файле свойств build.properties --> <propertyfile file="${ant.src.dir}\build.properties"> <entry key="build.number" type="int" operation="+" default="0"/> </propertyfile> <!-- подключить файл свойств build.properties, вместе со свойством build.number --> <property file="${ant.src.dir}\build.properties"/> <!-- получить номер версии продукта --> <property name="app.version" value="${major.version}.${minor.version}.${build.number}"/> <!-- известить о версии продукта --> <echo message="Build number is ${build.number}"/> <!-- взять файл из шаблонов с указанием версии продукта и поместить в подходящее место --> <copy file="${ant.src.dir}\VERSION.as" todir="${full.src.dir}" overwrite="true"/> <!-- заменить в файле текст VERSION на номер версии --> <replaceregexp file="${full.src.dir}\VERSION.as" match="version" replace="${app.version}" byline="true"/> </target>имя файла должно совпадать с именем константы VERSION.as
package org.hyzhak.experiments.simpleant { /** * @private * Version string for this project */ public const VERSION:String = "version"; }
Комментариев нет:
Отправить комментарий