※リニューアルした記事はこちらからhttp://ameblo.jp/tech-note/entry-10535993099.html

Flex SDK 3.0以降には mxmlc というコンパイラ以外に fcsh というコンパイラも含まれるようになった。以前は mxmlc が標準で fcsh は別途ダウンロードが必要であったのだ。


なお、製品である Flex Builder は fcsh の方が使われている。fcsh は一度コンパイルをすると次回以降は高速になる、というメリットがあるのだ。



EclipseからAntで呼びやすいのは mxmlc である。これにDOSバッチコマンドで起動できる。しかし、fcsh はシェルであるのでちょっと扱いが変わってくる。amxmlc.bat を参考に内容を書き換えても swf ファイルは生成されない。では、とDOSで fcsh を呼び出し、その後コマンドを発行、としてみると、swf は生成されるものの、全く速度メリットがなかった。



調べていると FCSH Wrapper というツールがあり、それだとメリットが享受できるうえ、Eclipseのプラグインとしても利用できるそうだ。



参考ページ


 http://d.hatena.ne.jp/eggtoothcroc/20081108/1226081405


 http://fcshwrapper.blogspot.com/2008/04/how-to-use-fcshwrapper.html


 http://blog.bigsource.de/index.php/2008/05/29/eclipse-fcsh-wrapper-plugin/



環境さえ揃っていれば、あとはビルド用の XML ファイルだ。上記の2つめのサイトから引用したものをカスタマイズした。


<?xml version="1.0" encoding="UTF-8"?>
<project name="changeme" default="all" basedir=".">
<property name="FLEX_HOME" value="c:/flex_sdk_3"/> <!-- SDKのパス -->
<property name="FCSHWRAPP_HOME" value="C:/fcshWrapper-bin"/> <!-- FCSH Wrapper のパス -->
<property name="src.dir" value="src" /> <!-- ソースのパス -->


<path id="mypath">
<fileset dir="${FCSHWRAPP_HOME}" includes="fcshWrapper.jar"/>
</path>


<taskdef name="fcsh" classname="ro.arhinet.fcshwrapper.ant.FcshTask">
<classpath refid="mypath"/>
</taskdef>


<target name="all">
<fcsh command="mxmlc">
<arg value="${basedir}/${src.dir}/test.mxml"/> <!-- ソースのパス -->
<arg value=" "/> <!-- 追加コンパイルオプション -->

</fcsh>
</target>
</project>



・コンパイルオプションの追加は上記の <!-- 追加コンパイルオプション --> に追加すればよい。


・使っているとコンパイルが途中で止る事象があった。この場合、常駐エリアの FCSH Wrapper を Quit してからコンパイルすれば使えた。これは他に回避策があるかもしれない。


・エラーメッセージが化けて返る。これも回避策はあるかもしれない。


<追記>


・日本語を含めるとエラーになる場合があった。mxmlファイルのエンコードを確認すると Sihft-JIS であった。UTF-8 で保存し直すと問題解決!


・mxmlのエンコードが不安定なら、xml宣言に UTF-8 を含めるとよい。


 例 <?xml version="1.0" encoding='UTF-8' ?>



Flexに詳しくない私がこんなことを試すのもおかしな話であるが、参考になれば。