Flex SDK

この投稿は7年半前の記事です。 情報が古くなっている可能性があるので、その点ご了承ください。
2010 年 2 月 6 日 2,606日前)
3,576文字 (読了時間8分)

SPONSORED LINK

困りました困りました! あまりにも困ったので、この苦しみを二度と繰り返さないために書いておきます。

1.Flex SDKをアップデート

現在、Flash Builder β2でアプリケーションを作成しているのですが、TextLayoutFrameworkで背景色の指定にバグありとの記述を見つけたので、急遽Flex SDKをアップデートすることにしました。

要するに、Flash Builder β2に元々入っていたSDKを4.0.0.10485から最新の安定版リリースである4.0.0.13875へ上げたわけですね。

Adobe Open SourceのダウンロードページからSDKをダウンロードして解凍、Flash Builderのフォルダ(今回はWin XPだったのでC:\Program Files\Adobe\Adobe Flash Builder Beta 2\sdks)にコピー。

プロジェクト>プロパティ>Flex コンパイラーとパネルを開き、「Flex SDKの設定…」をクリックします。

で、「追加」で新しいSDKを選び、それをデフォルトに設定しました。

2.mx名前空間で名前解決できてないっぽい

アップデートといってもマイナーバージョンの変更だからそのまま動くかと思いきや、いきなりエラー!

Textひとつ置けないというのか!
Textひとつ置けないというのか!

パッケージエクスプローラーに赤い×がぽちぽちついています。しかも、新規プロジェクトを作成直後にいきなりエラーを起こしたりと、すごいヤンチャぶり。

最初のエラーはTextコンポーネントを置いただけで起きました。<mx:Text>をコンポーネントの実装に解決できませんでしたというエラーメッセージ。

nsってもしかしてnamespaceの略?
nsってもしかしてnamespaceの略?

名前空間が変更になったのかと思ってコードヒントを出してみると、これまで<mx:Text>だったのが、<ns:Text>になってる。なにこれ。

入力すると一応動きますが、すべてのmxタグを変更するのはなんかイヤ。

色々ググった結果、Flexにはこれまでもこういう悲しい歴史があったとか、なかったとかいうことがわかりました。

とりあえず現状を確認するため、設定ファイルを確認してみることに。

Flexの設定ファイル。はじめて開いた。
Flexの設定ファイル。はじめて開いた。

僕の場合、設定ファイルはC:\Program Files\Adobe\Adobe Flash Builder Beta 2\sdks\4.0.0.13875\frameworks\flex-config.xmlにありました。

これを確認すると、やっぱり名前空間のURIが変わってます。

デフォルトのアプリケーションコンポーネントは下記のようなコードがMain.mxmlに書かれるので、mxのURIはlibrary://ns.adobe.com/flex/haloのはずなんですが。

<?xml version="1.0" encoding="utf-8"?>
   <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
   xmlns:s="library://ns.adobe.com/flex/spark"
   xmlns:mx="library://ns.adobe.com/flex/halo"
   minWidth="1024" minHeight="768">
   <fx:Declarations>
      <!-- Place non-visual elements (e.g., services, value objects) here -->
   </fx:Declarations>
</s:Application>

設定ファイルによると、名前空間mxのURIはlibrary://ns.adobe.com/flex/mxとなっています。

これを変更してみると、名前空間の参照エラー、コードヒントともに直りました

というわけで、アプリケーションやコンポーネントを作成するときはmxの名前空間をちょろっとだけ変えます。

xmlns:mx="library://ns.adobe.com/flex/mx" //haloをmxに

なんでhaloがボツになったのかはわかりません。ガンダムに出てくるからでしょうか。

3.コンパイル時にランタイムエラー

さて、これで直ったわいと左うちわでデバッグしてみたところ、いきなりランタイムエラー! バカー!

VerifyError: Error #1014: クラス spark.skins::SparkSkin が見つかりませんというメッセージが出ました。

Adobe Open SourceのDLページ
Adobe Open SourceのDLページ

また見つかんねーのかよ、と思ったところ、この対処法はダウンロードページに書いてありました。

spark.skin.swcがRSLであるため起きるエラーだとか。ビルド番号13079から起きるようになったらしいです。

なんのこっちゃわかりませんが、公式リリースには直るとのこと。応急処置だけやっておきます。

用語が統一できてないぞ!
用語が統一できてないぞ!

プロジェクト>プロパティ>Flex ビルドパスを選択し、「フレームワークのリンク」項目を「SDKのデフォルトを使用する(ランタイム共有ライブラリ)」から「コードにマージされます」に変更する。

同じ選択肢で「ですます」調と「である」調が混在しているのは、β版ならではでしょうか。

ともかく、これでランタイムエラーも消え、これまで通りに動くようになりました。

4.雑感

  • AdobeはFlexの名前の付け方にそうとう苦慮している。Flash Professional, Flash Catalyst, Flash Builder, Flex Builder, Flex SDKと、もう何が何だかわからない。Spark、halo、mx、fxも、スキンの名前なのかコンポーネントの名前なのか、「俺がお前でお前が俺で」みたいな状況です。
  • 毎回プロジェクトのデフォルトファイルを書き換えるのは面倒臭い。設定方法を知っている人がいたら教えて下さい。
  • ProgressionとFlexのどっちで作ったらいいか、まだまだ悩みはつきない。

追記@2010/02/07

この後、インテリセンス(コードヒント)でflashパッケージがすべて出てこなくなる現象に遭遇。

ググったところ、Flex intellisense forgets flash.*という記事に遭遇して、言われたとおりにしたら直りました。

プロジェクト>プロパティ>Flex ビルドパスを選択して、ライブラリパスのタブを選択。

ビルドパスライブラリにplayerglobal.swcを追加。このファイル自体はC:\Program Files\Adobe\Adobe Flash Builder Beta 2\sdks\4.0.0.13875\frameworks\libs\playerにありました。

うーん、すでにここへのライブラリパスを通ってるっぽいんだけどなあ、と不思議に思っていたところ、理由が判明。

ランタイムエラーを消すために「フレームワークのリンク」を「ランタイム共有ライブラリ(RSL)の使用」から「コードにマージされます」に変更しましたが、これが原因だったっぽいです。

RSLってのはAdobeのヘルプにありましたが、要するにFlash Playerで使い回す共有のライブラリ(まさにflash.*パッケージ)を埋め込まずに、使い回すことです。

このライブラリはFlash Playerがはじめて使われるときにダウンロードされ、半永続的にキャッシュされるらしいです。それを使い回すので、個々のswfファイルが軽くなるというわけですね。

「コードにマージされます」というのは、RSLを使わずにすべてのライブラリをswfに埋め込むこと。

ってことは、僕がこのページで書いたとおりにすると、swfが重くなることになります。普段は埋め込まないflashパッケージを全部埋め込んでるんだから…

どうやら、リリースビルドの時はplayerglobal.swcへのライブラリパスを外す必要がありそうです。

 

フォローしてください

ここで会ったのもなにかの縁。
高橋文樹.comの最新情報を見逃さないためにもフォローをお願いします。
めったに送らないメルマガもあります。

SPONSORED LINK

この記事について

この記事はが2010 年 2 月 6 日にプログラミングの記事として公開しました。

高橋先生の電子書籍

高橋先生の電子書籍

Amazonで電子書籍も買えます。

好きな言葉

既存の社会制度の中で生き、それを享受してきた人間にとって、そのシステムに期待するものが何もなかった者たちが、格別恐れもせずにその破壊を試みる可能性を想像することはおそらく不可能なのだ。

— ミシェル・ウエルベック

高橋先生の処女作

『途中下車』高橋文樹

2001年幻冬舎NET学生文学大賞受賞作です。

Web制作やります

Web制作やります

Web制作のご依頼は株式会社破滅派へ

不定期メルマガ

高橋文樹.comでは、不定期でニュースレターを配信しています。滅多に送らないので是非購読してください。

高橋文樹.comではプライバシーポリシーに準じて登録情報を取り扱います。