Apollo SDK を試す

Apollo がリリースされた。が、自分の PC の Flex 2 Builder は、試用期間を過ぎてしまい Apollo を試すことができない……と思いきや、コマンドラインツールも提供されているのでそちらで試した。参考にしたのは、Apollo for Adobe Flex Developers Pocket Guide

開発ツールをインストールする

  1. Flex 2 SDK と言語パックをダウンロードする
  2. 解凍後、"C:/Program Files" などに配置する
  3. Apollo SDK をダウンロードする
  4. 解凍後、Flex 2 SDK のフォルダに上書きコピーする
  5. 環境変数Flex 2 SDK の bin フォルダへのパスを通す

以上で環境設定は完了となる。

Apollo SDK

Apollo SDK には 3 つのコマンドラインツールが含まれる。

AMXMLC
MXMLC のラッパ。MXMLCApollo 用の引数を渡してコンパイラを走らせる。
ADL (Apollo Debug Launcher)
Apollo アプリケーションのランチャ。Apollo アプリケーションをインストールせずに実行できる。
ADT (Apollo Developer Tool)
air 形式の Apollo アプリケーションのインストーラを作成する。

swf を使った Apollo アプリケーション作成の流れ

swf を埋め込んだ Apollo アプリケーションを作成する手順は以下のとおり。

  1. mxml を書き、 AMXMLC で swf をコンパイルする
  2. アプリケーション設定ファイルを書き、ADL でテストする
  3. ADT で air パッケージを作成する

HelloWorld.mxml を書く

<?xml version="1.0" encoding="utf-8"?>
<mx:ApolloApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" title="Hello World" backgroundColor="0xFFCC00">
<mx:Label text="Hello Apollo" fontSize="18" horizontalCenter="0" verticalCenter="0"/>
</mx:ApolloApplication>

上記 MXMLコンパイルして swf を作成する。

amxmlc HelloWorld.mxml

HelloWorld-app.xml を書く

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/apollo/application/1.0.M3" appId="com.oreilly.apollo.gettingStarted.HelloWorld" version="1.0">
<properties>
<name>Hello World</name>
<publisher>Hoge</publisher>
<description>A sample Apollo application.</description>
<copyright>(C) 2007 Hoge. All rights reserved.</copyright>
</properties>
<rootContent systemChrome="standard" transparent="false">
HelloWorld.swf
</rootContent>
</application>

ADL で Apollo アプリケーションとして立ち上げる

adl HelloWorld-app.xml

インストーラを作る

最後に、以下のコマンドでパッケージが作成される。

adt -package HelloWorld.air HelloWorld-app.xml HelloWorld.swf

環境によってはうまくいかない

インストーラを作る部分のみ、会社では成功し、自宅では null が返ってきて失敗する。何かが足りないのかもしれない。

追記

null が返ってきてしまうのは、HelloWorld-app.xml の rootContent の値に空白文字が含まれていたためだった (コメント参照)。

<rootContent systemChrome="standard" transparent="false">
HelloWorld.swf
</rootContent>

ではなく

<rootContent systemChrome="standard" transparent="false">HelloWorld.swf</rootContent>

とすればよい。