FlashDevelopでAIR書き出しの環境設定

AIRアプリって作ったことが無いので、手順だけでも覚えておこうと思い、トライしてみました。
ところが、、、エラーが起こってAIRアプリの書き出しができず、しばらく右往左往してしまいました。今回の記事はその問題と、解決方法です。

開発環境

FlashDevelopではプロジェクト作成メニューで、「AIR AS3 Projector」という項目を選択して作成することによって、AIRアプリケーション書き出しに必要なファイルが自動作成されます。

AIRアプリケーション書き出しの手順(オプションをすっ飛ばして最低限。)

  • CreateCertificate.bat(batディレクトリの中に作成されている)を実行
    • batディレクトリ内にアプリケーション名.p12ファイルが作成される
  • PackageApp.batを実行

生じた問題

  • 書き出し手順とは直接関係ないが、プログラムのプレビュー時にエラー

エラーメッセージ:

invalid application descriptor: descriptor version does not match runtime version
  • PackageApp.batの実行時にエラー

エラーメッセージ:

application.xml: error 102: Invalid namespace http://ms.adobe.com/air/application/3.0

以上2つのエラーですが、問題と解決方法は共通です。

問題

application.xmlファイルの記述において

<application xmlns="http://ns.adobe.com/air/application/3.0">

というタグがあるのですが、この末尾にある 3.0 という数字が、AIRのランタイムのバージョンと一致していないことが原因でした。

では、AIRランタイムのバージョン番号と一致するようにタグ内の番号を合わせれば解決。。。となりますが。。。

落とし穴
プログラム一覧にあるAIRランタイムのバージョン確認したけど、合ってるよ!

という具合に、Windowsに現在インストールされているAIRランタイムのバージョンとタグの数字が同じなのにも関わらずエラーが出ていました。
この落とし穴に陥っている場合の問題は、Windowsの環境変数に、以前にインストールした古いバージョンのflexSDKへのパスが設定されていることになります。

Windowsの環境変数に設定されているflexSDKへのパスは自分が意図しているものか?

実はFlashDevelopがAIRアプリ書き出し時に参照しているAIRランタイムのパスは、プログラム一覧に出てくるAIRランタイムとは別なのです。ではFlashDevelopがどこのflexSDKのランタイムを参照しているかというと、Windowsのシステム環境変数から確認することができます。

最終的な解決方法

環境変数に設定されている古いSDKへのパスを、新しいflexSDKへのパスに書き換える。

システム環境変数の参照と変更
コントロールパネル
↓
システム
↓
詳細設定タブ
↓
環境変数
↓
「システム環境変数」の項目において
↓
「Path」の項目を選択
↓
編集

と操作すると環境変数が編集できるようになります。さまざまなアプリケーションの環境変数がコロン(;)で区切られて連続しているのですが、そのなかに

C:\FlexSDKをインストールしたディレクトリ\flex_sdk_3.4.0.6955\bin;

というようなflexSDKに関する環境変数があります。(当方の場合)この中の

flex_sdk_3.4.0.6955

というのが現在Windowsで実行されるflexSDKのディレクトリ(≒AIRのランタイム)となります。
自分の場合はflex_sdk_3.4.0.6955というバージョンのSDKが設定されているということになりますが、これは以前にインストールしたもので、自分が使いたいバージョンではありません。FlashDevelopの設定では新しいSDKディレクトリへのパスを設定していたのですが、Windowsの環境変数は更新されず、古いSDKへのパスのままだったのです。

よって、環境変数を

C:\FlexSDKをインストールしたディレクトリ\flex_sdk_3.4.0.6955\bin;

となっているものを

C:\FlexSDKをインストールしたディレクトリ\flex_sdk_4.5.1.21328\bin;

というように、自分が使いたいflexSDKのbinディレクトリへのパスに書き換えることによって解決します。
(くれぐれも、他のアプリケーション用の環境変数を誤って変更したり、消したりしないように注意してください。コロン ; が区切りですよ。)

flexSDKへのパスは、各自どこにSDKを置いたかによって異なるので自分がSDKを置いた場所を確認してください。

なお、flexSDKに含まれるAIRランタイムの確認方法は、

SDKをインストールしたディレクトリ\bin

のディレクトリ内に、「adl.exe」というプログラムファイルがあるので、右クリック→プロパティ
で「バージョン情報」タブの「製品バージョン」項目を選択すると知ることができます。

以上のように環境変数に自分の意図したAIRランタイムが含まれるflexSDKを指定することで、無事にAIRアプリが書き出せるようになりました。