Compilación con ANT
Se podrían dedicar unos cuantos capítulo o hasta libros en donde podamos explayarnos sobre ANT, no soy muy conocedor pero las pocas tareas básicas que aprendí me han resultado de gran utilidad.
Una pequeña introducción y juro que pequeña, Apache ANT es una herramienta Java ue utiliza XML para describir las tareas y las dependencias dentro de un entorno de compilación. Se puede bajar de aqui.
Una vez descargado debe instalarse en un directorio que se adapte a la forma de trabajar, para los úsuarios de Mac en caso de no tener instalado se debe instalar en el directorio /usr/local.
Los usuarios windows deben configurar las variables de entorno dentro de las variables Sistema en el path, en el campo valor añada c:
En MAC en un terminal escriba open -e .profile y se agrega la ruta /usr/local/ant/bin.
Luego de esto debemos construir el archivo dentro del directorio en el que se invoca el comando.
Este es un ejemplo que encontre en la web, y es bastante genérico.
<?xml version="1.0" encoding="utf-8"?>
<!-- ======================================================================== -->
<!-- AIR Application Build File (Ant) -->
<!-- ======================================================================== -->
<project name="AIR Application" default="main" basedir=".">
<property name="app.name" value="HelloWorld" />
<property name="desc.name" value="HelloWorld-app" />
<property name="store.type" value="pkcs12" />
<property name="cert.type" value="1024-RSA" />
<property name="cert.name" value="certificate.pfx" />
<property name="cert.pass" value="password" />
<property name="src.dir" value="." />
<property name="deploy.dir" value="." />
<target name="main" depends="init,taskInput,compile,launch,package" />
<target name="init" description="Sets properties based on OS.">
<condition property="amxmlc.exec" value="amxmlc.bat">
<os family="windows" />
</condition>
<condition property="amxmlc.exec" value="amxmlc">
<os family="mac" />
</condition>
<condition property="adt.jar" value="C:/flex_sdk_3/lib/adt.jar">
<os family="windows" />
</condition>
<condition property="adt.jar" value="/Applications/flex_sdk_3/lib/adt.jar">
<os family="mac" />
</condition>
</target>
<target name="taskInput" description="Presents task options.">
<input message="Please select a task..." validargs="compile,launch,package"
addproperty="task.action" />
<condition property="do.compile" value="true">
<or>
<equals arg1="${task.action}" arg2="compile" />
<equals arg1="${task.action}" arg2="launch" />
<equals arg1="${task.action}" arg2="package" />
</or>
</condition>
<condition property="do.launch" value="true">
<equals arg1="${task.action}" arg2="launch" />
</condition>
<condition property="do.package" value="true">
<equals arg1="${task.action}" arg2="package" />
</condition>
</target>
<target name="compile" depends="taskInput" description="Generates SWF.">
<exec executable="${amxmlc.exec}">
<arg line="-output ${deploy.dir}/${app.name}.swf" />
<arg line="${src.dir}/${app.name}.mxml" />
</exec>
</target>
<target name="launch" if="do.launch" depends="compile"
description="Launmches application.">
<exec executable="adl">
<arg line="${deploy.dir}/${desc.name}.xml"/>
</exec>
</target>
<target name="package" if="do.package" depends="compile"
description="Packages AIR application.">
<antcall target="create.certificate" />
<java jar="${adt.jar}" fork="true" failonerror="true"
inputstring="${cert.pass}">
<arg value="-package" />
<arg value="-storetype" />
<arg value="${store.type}" />
<arg value="-keystore" />
<arg value="${cert.name}" />
<arg value="${app.name}.air" />
<arg value="${desc.name}.xml" />
<arg value="${app.name}.swf" />
</java>
</target>
<target name="create.certificate" if="do.package"
description="Creates self signed certificate.">
<java jar="${adt.jar}" fork="true" failonerror="true">
<arg value="-certificate" />
<arg value="-cn" />
<arg value="${app.name}" />
<arg value="${cert.type}" />
<arg value="${cert.name}" />
<arg value="${cert.pass}" />
</java>
</target>
</project>
No se asusten al ver la cantidad de lineas del archivo, si se fijan bien es un simple xml bastante limpio, de todas formas voy a apuntar un poco la parte principal, de este ejemplo.
Si no se dieron cuenta es para compilar un “Hello World”, en AIR, bueno si bien dije compilar, las tareas que esta invocando son complile, launch, y package, de estas tres tareas “compile” va a ser invocada siempre, ya que las otras dos dependen de esta.
Estas tareas son ejecutadas según la entrada que proporcione el usuario, antes del empaquetado hay una tarea que nos permitirá auto-firmar en este caso nuestra aplicación, también encontraremos la tarea init que nos configura las propiedades del sistema operativo.
Finalmente para ejecutar la construcción de nuestro Hello World, se abre una linea de comando en del directorio de trabajo e introducir el comando.
> ant
Luego de esto se nos pedira que ingresemos el nombre de la tarea a ejecutar (compile, launch o package) y a su vez se genera el archivo certificat.pfx y el archivo HelloWorld.air.
Bueno la única forma de aplicación de esto es hacer muchas pruebas de alternando los directorios y cambiando los valores de las propiedades, como todo al principio puede costar pero una vez que uno se acostumbra ganamos mucho tiempo
Tags: Air, ANTPosted in Air | No Comments »
