flashrodさんのところで、Antを用いてApolloアプリケーションをコンパイルする方法がでていました。
その中で
Flex Ant Tasks の mxmlcタスクだとどうするんだろう? たぶん待ってればそのうちApollo対応したFlex Ant Tasksが出てくるんじゃないの。
というようにありました。
ちょっと前に、S2Flex2のサンプルアプリケーションであるflex2_exampleをリリースしたときに、Flex Ant Tasksでコンパイルできるようにbuild.xmlを修正したのでこれをベースにApolloアプリケーションでできるかどうかを確かめてみました。
結果的には、mxmlcタスクで以下のように設定することでコンパイルできました。
<load-config filename="${FLEX_HOME}/frameworks/apollo-config.xml"/>
apolloアプリケーションをコンパイルするときに利用するamxmlcは設定ファイルの指定にapollo-configを追加するようにしています。
mxmlc +configname=apollo
Flex Ant Tasksで同様の指定ができるかどうかを確認してみたところ、属性としては用意されていないようでした。
そこで、設定ファイルの指定を行うload-config タグでapollo-config.xmlを指定するようにして実行するように変更したところ、コンパイルできるようになりました。
以下build.xmlの抜粋です。
(といってもほとんどFlex Ant Tasksのページにある例のままです)
<macrodef name="call-amxmlc">
<attribute name="appName" default="Main"/>
<attribute name="locale" default="ja_JP"/>
<sequential>
<mxmlc
file="${APP_ROOT}/@{appName}.mxml"
output="${DEPLOY_DIR}/@{appName}.swf"
actionscript-file-encoding="UTF-8"
keep-generated-actionscript="true"
locale="@{locale}"
incremental="true">
<!-- Get default compiler options. -->
<load-config filename="${FLEX_HOME}/frameworks/apollo-config.xml"/>
<!-- List of path elements that form the roots of ActionScript class hierarchies. -->
<source-path path-element="${FLEX_HOME}/frameworks"/>
<!-- List of SWC files or directories that contain SWC files. -->
<compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
<include name="libs" />
<include name="../bundles/{locale}" />
</compiler.library-path>
<compiler.source-path path-element="src/main/actionscript3" />
<compiler.library-path dir="${basedir}/lib" append="true">
<include name="swc" />
</compiler.library-path>
<!-- Set size of output SWF file. -->
<default-size width="800" height="600" />
</mxmlc>
</sequential>
</macrodef>
生成されたswfをadtを利用して実行したところ、Apolloアプリケーションとして実行することができました。\(^o^)/
Flex Ant Tasksもそのうち改善されていくとは思いますがとりあえずは現状のままでもApolloアプリケーションのコンパイルくらいはできそうです。
などがantタスクとして実行できるようになればいいなと思います。
でもでも...。
依存するものが少ないのであれば、わざわざFlex Ant Tasks を使わずにflashrodさんの方法でいいような気もしました。
jarファイルではなく実行ファイルしかないADTをconditionやosタグを使ってmacでもwinでも利用できるようにしておけば困ることがないような...。
優位点としては..。
・html-wrapperが簡単に作れる。->replaceを使ってできなくはない。
・mxmlcが簡単に呼び出せる ->macroを設定すればほとんどかわらない。
・adobeが出しているのでみんなが使う可能性が大きい ->これはそうかも
でしょうか。
他にあったら教えてください。>どなたか。
#amxmlcだけではなく、adlを用いた実行や、adtを用いたairファイルまでをantで実行する例があります。とても参考になります。
Adobe Apollo Alpha Application with Ant
http://d.hatena.ne.jp/flashrod/20070324#1174718446
# Flex Ant Tasksはここからdownloadできます。
Flex Ant Tasks
http://labs.adobe.com/wiki/index.php/Flex_Ant_Tasks
#S2Flex2 のサンプルでも実験的に使っています。
https://www.seasar.org/svn/sandbox/s2flex2/trunk/flex2_example/build.xml
この記事に対するコメント