kkAyatakaのメモ帳。

誰かの役に立つかもしれない備忘録。

Flex 3 SDKのコマンドラインビルド環境を整える

Adobe AIRを含めたFlex関連をちょっと触るだけなら、Flex SDKコマンドラインから使ってやれば無料で手軽で確実。まあ、普通はIDE環境がいろいろ存在しているのでそっちで良いんだけど、ちょっと違う環境や、Linux(サポート打ち切られたけど)なんかでデバッグ実行したいだけって時に知ってると何かと便利な訳です。

結構簡単ですしね。

基本はAdobe Open SourceなどからFlex SDKをダウンロードして展開するだけ。後はコマンドを2つ知っていればOK。あ、実行にJavaが必要か。

  1. Java実行環境の準備
  2. Flex SDKのダウンロードと展開
  3. amxmlcでメインとなるmxml(WindowedApplication)をコンパイル
  4. adlを使ってデバッグ実行

Flex SDKはOSを問いませんが、今回はMacのOS X Lion 10.7です。Adobe AIRアプリの実行を行います。

Javaのインストール

OS X Lion 10.7は標準でJavaが無いのでJavaを入れます。Javaを使おうとするとOSが認識してパッケージのダウンロードとインストールができます。なので、とりあえずコマンドラインjavaをたたけば、インストールできます。

$ java

Flex SDKの展開

こことかここからダウンロードして解凍します。zipファイルなので通常はダブルクリックで解凍できますが、Macでは失敗します。

f:id:kkAyataka:20120224235359p:plain

後で分かるんですが、アクセス権がおかしくなってるみたいなんですよね。で、どうするかというと、ターミナルからunzipコマンドで解凍します。

$ unzip flex_sdk_3.6a.zip -d 3.6.0

オプションの「-d」で解凍先を指定しないと、カレントフォルダに解凍されるので注意が必要です(<-デスクトップで実行して、大変なことになった人)。

ここで解凍したフォルダを見てみると「frameworks」フォルダにアクセスできないことが分かります。

f:id:kkAyataka:20120224235901p:plain

このままではコンパイルできないので、アクセス権を変更します。階層的にアクセス権がおかしいので、コマンドで一気に変えます。

$ chmod -R 755 3.6.0/frameworks/

これで準備はOKです。

コンパイル

適当にメインのmxmlを用意します。

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication
  xmlns:mx="http://www.adobe.com/2006/mxml">
</mx:WindowedApplication>

amxmlcを使ってコンパイルします。

$ 3.6.0/bin/amxmlc app.mxml 

app.swfが生成されます。

ターミナルで文字化けが発生しますがコンパイルは成功します。この文字化けはamxmlcがSJISでメッセージを出力している影響のようです。まあ、メインで開発する訳ではないので基本は無視ですが、次の方法で回避できるので、適時対応する感じでしょうか。

  • OSの言語設定を英語にする
  • ターミナルの環境設定で文字エンコーデングを日本語(Shift JIS)などに変更する

デバッグ実行

コンパイルできたらadlでデバッグ実行します。Adobe AIRでの実行はアプリケーションディスクリプタを元に実行されるので、ディスクリプタを用意します。これはテンプレートがFlex SDK内にあるため、それをコピーして必要な分だけ改変して使用します。

まずはコピー。

$ cp 3.6.0/templates/air/descriptor-template.xml app-desc.xml

次いで、内容を変更します。「id」、「filename」、「content」を記述すれば実行できるみたいですね。

<?xml version="1.0" encoding="utf-8" ?>
<application xmlns="http://ns.adobe.com/air/application/1.5.3">
	<id>kkAyataka.sample</id>
	<filename>Sample</filename>
	<initialWindow>
		<content>app.swf</content>
	</initialWindow>
</application>

adlからディスクリプタを指定して、デバッグ実行します。

$ 3.6.0/bin/adl app-desc.xml 

起動しました。
f:id:kkAyataka:20120225003345p:plain