読者です 読者をやめる 読者になる 読者になる

Adobe AIR開発環境構築

SDKインストール

先ずは

#yaourt -S adobe-air

としました。
パッケージ:adobe-air-sdkが依存関係にあるので、これで勝手にSDKもインストールされます。

次いで、FlexSDKを入れました。

#yaourt -S flex-sdk

SDKを二丁用意した後は、そこら辺に転がってるHello World!のソースをコピペしてお試ししてみました。
今回参照させていただいたのは
http://d.hatena.ne.jp/gtaka555/20081203/p1
です。
上記の参考リンクにしたがってHelloWorld-app.xmlとHelloWorld.mxmlを作成した後に

$/opt/flex-sdk/bin/amxmlc HelloWorld.mxml

で、Flexのコンパイル。
ご覧の通り、amxmlcコマンドへのパスは通していません。
気が向いたらそのうちやるかもしれません。

では、準備のできたところでAIRのRTEで実行!

$/opt/adobe-air-sdk/bin/adl HelloWorld-app.xml

ところが

Error loading the runtime (libgtk-x11-2.0.so.0: wrong ELF class: ELFCLASS64)

えー、マジですか。

ELFCLASS64でググってみたところ、64bitのCPUで32bit用のライブラリ呼んでるとか、何かそれ系っぽい感じが。
(ウチの子のCPUのアーキテクチャAMD64です)

そこで試しに

#yaourt -S bin32-adobe-air

してみて、Arch64対応させた32bit版AIRのRTEのインストールをし、その依存関係にあるlib32のパッケージを入れてみました。

で、改めて

$/opt/adobe-air-sdk/bin/adl HelloWorld-app.xml

すると

Error loading the runtime (libxml2.so.2: wrong ELF class: ELFCLASS64)

お、エラーメッセージが変わった。
さっきはlibgtk-x11-2.0.so.0に問題アリと出ていたところが、今度はlibxml2.so.2がマズいとのこと。

そこで今度は

#yaourt -S lib32-libxml2

で、lib32のlibxml2をインストール。

今度こそ!

$/opt/adobe-air-sdk/bin/adl HelloWorld-app.xml

成功!!
HelloWorldというテキストの表示されたウィンドウが出てきました。

後で思ったのですが、bin32-adobe-airの依存関係にあるlib32のパッケージを全部入れるようなマネしなくても、lib32-gtkだけ入れれば良かったんじゃないだろうか…。
ま、別にいいやってことで。

さて、お次はHTML + JSベースでAIRアプリが動くか試してみるコーナーです。
今度は
http://help.adobe.com/ja_JP/AIR/1.1/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7ecc.html
を参考に、HelloWorld-app.xmlとHelloWorld.mxmlを作成しました。
で、adlコマンドで実行してみたところ

Error: HTMLLoader failed to initialize
at flash.html::HTMLLoader/initHTMLEngine()
at flash.html::HTMLLoader()
Application crashed with an unhandled SIGSEGV
Crashlog has been dumped in /tmp/airCrashLogs/0505_0003_qT4lFr

うわ、SIGSEGVって…。
コイツへの対処方法は分からなかったので、とりあえずは放置で。

emacsの設定

actionscript-modeを追加しました。
ASを書くには、これの他にas3-modeっていうのがあって、そっちの方が高機能らしいです。
とりあえず導入のイージーなactionscript-modeを入れてみました。

まずは適当にググって、acrionscript-mode.elをDLしてきました。
最初、yaourtで入れようと思ったのですが、レポジトリには上がっていなかったので。
yaourtでパッケージ管理できないとなると、/usr/share/emacs/site-lispの下に置くのもどうかと思ったので、ホームの下に設置することにしました。

$cd
$mkdir .emacs.d

で、~/にelisp設置ようのディレクトリを作成。
人によっては、.elispとか、.site-lispっていう名前にするようですが、まあ、何でもいいでしょう。
次に、作成したディレクトリをロードパスに追加しました。

$vi .emacs

として、以下を記述しました。

(add-to-list 'load-path "~/.emacs.d")

ロードパスのListが突っ込まれている変数:load-pathに、~/.emacs.dを要素として追加するという訳です。
load-pathに要素を追加してそれをload-pathにsetqし直すっていう書き方もよく見かけますが、この方がスッキリしてるので、こっちを採用しました。

ロードパスの追加に続き、actionscript-modeをメジャーモードとして追加です。
同じく.emacsに、以下を記述しました。

(autoload 'actionscript-mode "actionscript-mode" "actionscript" t)
(setq auto-mode-alist
        (append '(("\\.as$" . actionscript-mode)) auto-mode-alist))

さて、これで*.asファイルを開けばactionscript-modeになってくれるはずです。

emacs -nw test.as

よし、これで立派にASの編集が…

できませんでた。

インデントできないという現象に見舞われました。

ブラケット入力後のオートインデントはおろか、Tabも効かないという状態。

function is void : incf

などとほざきやがります。

どうやら、actionscript-mode.elの頭に

(eval-when-compile (require 'regexp-opt) (require 'regexp-opt) (require 'cl))

を記述しないとダメらしいです。
それ、バグじゃないか…。

さて、これでとりあえずASは無事に書けるようになりました。

mxmlもemacsで書けるようにしないとなー、と思いつつ、こっちはまだ手つかず。