[IDEA]intelliJ IDEA 12.0.4でAction Script Compiler2.0(ASC2.0)を使う方法。

IDEA12はAction Script Compiler2.0(ASC2.0)対応してるぜ、と書いてあったので試してみました。
で、ちょっとだけ迷ったのでメモ。
(intelliJ IDEA 12.0.4と書いたけどたぶん12.0.2とかでもできるはず)

※ここのスレッドが参考になりました。
IntelliJ12 – Which version of ActionScript Compiler 2.0 is used?を見ながら


ASC2.0はFlashBuilder4.7に搭載されてる新しいコンパイラ。
(ちなみにFlexSDKとCompilerの違いはイマイチよくわかってない。。)
具体的にどういうものかはこちらにわかりやすく書いてありました。

とんぶろ:ActionScriptCompiler2.0について発表してきたよ


ASC2.0のダウンロードはここからできます。
(ずっとlabs扱いだったけど最近正式版がリリースされたっぽい)

http://www.adobe.com/devnet/air/air-sdk-download.edu.html

というかAIR SDK(3.6)に含まれてるのね。
(やっぱりよくわかってない)


IDEAで使うには、まずこれをFlexSDKにマージしてあげないといけないみたい。
(ダウンロードしたAIR SDKをFlexSDKに上書きコピー)
これまでのAIR SDKと同じ使い方ですね。
FlexSDKとは違うコンパイラだからFlexSDKいらないんじゃないのと思ってましたが、AIR SDKだけだとIDEA上でSDKに登録することができませんでした。
(FlexSDKじゃないよ!と怒られる)

e757f55b4dda12f264b57f2a103489dd

マージしてあげたものは問題なく登録できました。
f55b868e89aa0c5cefcc0717c1f110fa


SDKの設定ができたら、File->SettingでSettingウィンドウを開いて、
左のリストから、Compiler->Flex Compilerを選んで、
Compiler withをMxmlc/compcにチェック
でPrefer ActionScript Compiler 2.0 for pure Action~にチェック
こんな感じ。

25bb5deb852d41001ca52183e7a2948e

これで準備OKです。
ためしに、Additional compiler optionsに-advanced-telemetry=trueを追加してビルドしてみたものはScout上でasの中まで見ることができるようになりました。

d6693af3e6b0fdebbb0d1a72648ca05b

FlashBuilder4.7だとFlashProで作ったSimpleButtonの挙動がかなり怪しげなことになってたけどこれはどうなんだろうか。

2013/2/20追記
ASC2.0でのSimpleButtonの挙動は問題なかったでした。
一安心。

[IDEA]intelliJ IDEAでFlashプロジェクトからipaの書き出しとiPhone実機での実行

intelliJ IDEA

昨年マヤ暦が終わっちゃう記念で75%OFFセールがあったのでなんとなく買ってたのですが、せっかく買ったので触ってみました。
とりあえずはFlashプロジェクトでipaを作ってみたのですが、普段使ってるFlashDevelop(以下FD)との使い勝手の違いに悩まされましたので、その辺のメモ。


基本的なFlashプロジェクトの作り方は、katapadさんがまとめてくれているこちら記事どおりやったら問題なくできました。
IDEAでのFlashプロジェクトの作り方

ちょっとだけ悩んだのは、記事はver11.1でかかれていて、ボクは12.0.2で試したのでUIのレイアウトが微妙に異なってるところもありました。
具体的には、「ライブラリに追加」の項目での[+]ボタンの位置
11.1では下にあったのが、12.0.2では横になったようです。

11.1
4d57a47b329187e7f7f342757014346b

12.0.2
12

 


■FlashMobileプロジェクトの手順
File->New Projectで、Other:FlashModuleを選択してNext
(ここではProject名はMobileTestにしとく)
99965e99517bd4bf7b8b3dfb1a1f5767

Target PlattformをMobileに。
Pure actionScriptにチェック(チェックしないとmxmlになる)
FlexSDKは自分で用意して指定する
f775311a67e35423decbf6b32301ab82
 


■SWFの基本設定
swfのwidth、height、frameRateの設定はIDEから入力できるところはなさげ
SWFタグで指定するのがいいかも。
(指定しないと、width:500,height:375,frameRate:24になるっぽい)

package {

import flash.display.Sprite;
import flash.text.TextField;

[SWF(width="640",height="960",frameRate="60")]

public class MobileTest extends Sprite {
    public function MobileTest() {
        var textField:TextField = new TextField();
        textField.text = "Hello, World";
        addChild(textField);
		this.graphics.beginFill(0xFF0000);
		this.graphics.drawRect(0,0,100,100);

		trace(stage.stageWidth, stage.stageHeight);
    }
}
}

■書き出しの各種設定
File->Project Structure
Modules->MobileTest(app)を選択するとこんな画面
ffe78124e78958bafdd8b7e059b1701f

iOSタブでプロビジョニングプロファイル,証明書ファイル,applicationXMLの設定などができる。
1b0be155773854d9babde8eecd958658

applicationXMLはApplication descriptorでGeneratedにチェックが入ってると自動で生成してくれる。
ただ、IDE上で各種XMLの項目を設定する機能はないようなので、Generatedではなく、Custom templateを選択したほうがよさげ。
(GeneratedだとappIDがプロジェクト名なってしまうし)

Createボタンを押すとTemplateウィドウで基本的な設定ができる。
9e7431335116ff1f25c06075e14a7b93

これで任意のxmlファイルが生成されてipaのパッケージに使える。
(Templateで設定できなかった項目に関しては直接XMLを編集)

■実行
Edit Configrations…というところから設定可能
Clipboard01

こんな設定画面
d60a6db2cace261ff99a595d7f5ea885

Run onという項目でEmulatorを選択すればPC上で確認できるのはありがたい。
(FDのモバイルプロジェクトだとできなかった気がする)
Emulatorには主要な端末データが入っていて、ステージサイズが設定されるっぽいのだけど実際に書き出されるSWFには反映されてないっぽい。
たとえばiPhoneRetinaに設定してRunするとEmulatorは幅:高さは640:960の枠サイズで表示されるけども、中に表示されるswfは(SWFタグを指定していないと)500:375で表示されてる。
明示的にSWFタグで幅と高さは指定してあげる必要がありそう。


実機テストは、
Run onの、iOS deviceにチェック
OptionsのDebug on device overをUSB,port:7936にチェック
PCにUSBでiPhoneを接続した状態で、Run->MobileTestを実行するとipaが生成されてiPhoneにインストールされるところまでやってくれる。
(USBのポート番号はデフォルトのままでうまくいった)
複数の端末をつないでるときは
must specify -device parameter when more than one device is available
というアラートがでた。
「複数の端末がつながってるときは指定デバイスのパラメータは必須」という意味らしい。


ちなみに、Run->Run MobileTestで生成されるipaの形式は、”ipa-test”
(もしくはipa-test-interpreter:fast_packagingにチェックした場合)
デバッグモードは、Run->Debug MobileTestで”ipa-debug”が生成
(もしくはipa-debug-interpreter:fast_packagingにチェックした場合)

store用やaddhoc用のipaを作るには、
Build->Package AIR Applicationを選択すると以下のウィンドウがでるので、
iOS package typeのセレクトボックスから選択可能。

4f57fe8d9b3428da392bfe62d49fae61

store用やaddhoc用のipaの実機へのインストールは手動でやるしかないみたい。
Runで生成される”ipa-test”だとパフォーマンスが落ちるので、addhocかstoreで動作テストしないといけなかった経験があるのでstore/addhocビルドを自動インストールする仕組みがないとちょっとめんどくさい気がする。。。


あとipaファイルの出力はデフォルトでoutフォルダとなるけど、outフォルダはIDEA上のProjectパネルには表示されない。

dad6a6607501b64f71952382fd9feddb

見えて欲しいところだけど、プロジェクト上での出力フォルダと定義されたものはExcluded扱いとなるので無理っぽい。
(Project Structureパネルでも、Excludedを解除することもできない)

e111a8b13e6608a09dc2d57ba7003c26

表示するようにするにはProject Structureパネルで、
Projectを選択し、Project compiler output:の項目に記載されてるoutまでのファイルパスを削除する

823904a7878a5d7ceeca0c7b0f877ffc

プロジェクト上での出力フォルダの定義を消しちゃうとどこに出力されることになるのか?と思うけど、Modules側のOutput folderで設定されていれば特に問題ないみたい

8404208c0a32b8be4cd05208d0781efa

IDEAを再起動するとoutフォルダが見えるようになります。

bbf2cefc1496661e2f94c93ed2cf8e8c


挙動がよくわからなくて調べるのに結構苦労してるわけですが、まだIDEAに完全移行しようという気にはなれず。
もうちょっと触ってみないと、よさがわからない。