Вообще тема 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";
}


Комментариев нет:
Отправить комментарий