AIR

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

More than 5 years have passed since last update.

目的

この記事に書いてあるのは、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ランタイムバージョンに依存する部分。
対応を確認すること。

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>