目的
この記事に書いてあるのは、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 コマンド
ADT コード署名のオプション
swf作成用のAntタスクについて
flexTasks.jarをわざわざbuild_libに配置しているが、
{SDKインストールディレクトリ}/ant/libに配置されている。
AIR証明書について
事前に下記コマンドにて作成している前提。
証明書生成
adt -certificate -cn nt67 -ou org -o "nt67 .org" -c JP 2048-RSA air_key_store.p12 testpass
antファイル本体
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ランタイムバージョンに依存する部分。
対応を確認すること。
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>