AntによるAIRアプリケーションのパッケージ生成

# 目的
この記事に書いてあるのは、AIRアプリケーションのインストールパッケージ(.air)を ant で生成する部分。
最終目的は、Jenkinsでインストールパッケージを 定期的に or オンデマンドで生成すること。

# 概要
Flex SDK同梱のFlexTasksを用いて、Antでmxmlおよびasをswfファイルにコンパイルし、
Antからadtコマンドを叩いて インストールパッケージ(.airファイル)を出力する。

# 環境
* Mac OS X 10.7.5
* Flex SDK 4.1.0
* Ant 1.8.2

# 関連ファイルの内容
## antによるビルド

buildターゲットでswfファイルを作成し、build_airターゲットで.airインストールパッケージを出力する。
後者はadtコマンドを実行する処理をAntで書いているだけ。


参考.
[ADT package コマンド]("http://help.adobe.com/ja_JP/air/build/WS901d38e593cd1bac1e63e3d128cdca935b-8000.html")
[ADT コード署名のオプション]("http://help.adobe.com/ja_JP/air/build/WS5b3ccc516d4fbf351e63e3d118666ade46-7f72.html")

## swf作成用のAntタスクについて
flexTasks.jarをわざわざbuild_libに配置しているが、
{SDKインストールディレクトリ}/ant/libに配置されている。


## AIR証明書について
事前に下記コマンドにて作成している前提。

```bash:証明書生成
adt -certificate -cn nt67 -ou org -o "nt67 .org" -c JP 2048-RSA air_key_store.p12 testpass
```

### antファイル本体

```xml:build.xml

<?xml version="1.0" encoding="utf-8"?>
<project name="air project" basedir="." default="build_air">
  <property name="FLEX_HOME" value="/Applications/Adobe Flash Builder 4 Plug-in/sdks/4.1.0"/>
  <property name="flex_bin" value="${FLEX_HOME}/bin" />
  <property name="output.file" value="project" />
  <property name="APP_ROOT" value="." />
  <taskdef resource="flexTasks.tasks" classpath="${basedir}/build_lib/flexTasks.jar" />

  <target name="build" description="build swf">
    <mxmlc file="${APP_ROOT}/project.mxml"
	   keep-generated-actionscript="true"
	   debug="false"
	   optimize="true"
	   configname="air"
	   output="${output.file}.swf">
        <load-config filename="${FLEX_HOME}/frameworks/air-config.xml"/>
        <source-path path-element="${FLEX_HOME}/frameworks"/>
    </mxmlc>
  </target>

  <target name="build_air" description="Create the AIR package">
    <exec executable="${FLEX_HOME}/bin/adt" failonerror="true">
      <arg line="-package" />
      <!-- AIR SIGNING OPTIONS -->
      <!-- adt -certificate -cn nt67 -ou org -o "nt67 .org" -c JP 2048-RSA air_key_store.p12 testpass-->
      <arg line="-storetype pkcs12" />
      <arg line="-keystore ${basedir}/air_key_store.p12" />
      <arg line="-storepass testpass" />
      <arg line="-keypass testpass" />

      <!-- Output format -->
      <arg line="-target air" />

      <arg line="${output.file}.air" />
      <arg line="application.xml" />
      <arg line="-C . ${output.file}.swf" />
    </exec>
  </target>
</project>


```

## アプリケーションディスクリプタの設定
xmlnsのバージョンは AIRランタイムバージョンに依存する部分。
対応を確認すること。

[AIR アプリケーション記述エレメント](http://help.adobe.com/ja_JP/air/build/WSfffb011ac560372f2fea1812938a6e463-8000.html#WSfffb011ac560372f2fea1812938a6e463-7ff6)

```xml:application.xml
<?xml version="1.0" encoding="utf-8" ?> 
<application xmlns="http://ns.adobe.com/air/application/2.0"> 
    <id>org.nt67</id> 
    <version>0.0.1</version> 
    <filename>test_project</filename> 
    <name>Test Project</name> 
     <description> 
        <text xml:lang="en">This is an example.</text> 
        <text xml:lang="ja">てすと.</text> 
        <text xml:lang="es">Esto es un ejemplo.</text> 
    </description> 
    <copyright>Copyright (c) 2013 nt67</copyright> 
    <initialWindow> 
        <title>Hello World</title> 
        <content>project.swf</content> 
    </initialWindow>  
</application>
```