[haXe][js] “Flasher だけど js 案件増えてきたなー” みたいな人は haXe かじってみてもいいんじゃね?

Posted { 2012.01.19 03:26:23 }
Categorie:{ haXe, javascript }  Tag:{, , , }  Comments:{ No Comments }

最近ちょくちょく haXeで js を試しているのでメモ。
※haXeは、エックス(とかヘックス)とか呼ばれてる。

そもそも haXe って?

haXe ってなに?って人のためにざっくり説明。
haXe は1言語で、Flash (AS2/AS3) 、 js 、PHP、C++、NekoVM、にかきだせる言語。(.hxファイルをコンパイラオブションで出し分ける)
haXe – haXe の紹介

記述は AS3 とか JAVA に似ていて、サーバー側もクライアント側も1言語でかけるってのが、特にメリット(かな?)。
※「1言語」ってのは「ワンソース」と同義ではないです。念のため。

特に、 haXe に興味を持った個人的理由は下記。
・(私自身が) オブジェクト指向 (AS3 or JAVA) に慣れている。
・ js に慣れていない。
・ js を仕事で書くことになった。
・ js でも AS3 みたいに継承とか書きたい。(prototype ふぁっこふ)
・ js は、コンパイルチェック(や型チェック)がないからデバッグがめんどい。
・いつも使ってる FDT が haXe の開発に対応している。(FlashDevelopも対応しているとのこと)

これはやってみるしかない(・∀・)

という感じ。

このご時世で「Flasherだけど js 案件増えてきたなー」みたいな人は、 haXe かじってみるのはあり?かもしれない。
「すべての道はインタラクションデザインに通ず」。

開発環境の準備

とりあえず無料で整う。

Mac なら FDT5 Free
Win でも FDT5 Free or FlashDevelop
※ほかにもあるのかな?

それぞれのIDEのhaXeチュートリアルをみればいいんじゃないかな。

FDT での haXe js プロジェクトチュートリアル動画は下記。
[1] haXe in action, check out a sample haXe project in FDT 5
[2] Complex HaXe example

ということで、以下、 js を書きだすメモ
(とくに js に限ったものではないメモも混じっています)

(続きを読む…)

[haXe][js] haXe で jQuery を使う方法

Posted { 2012.01.09 10:02:48 }
Categorie:{ haXe, javascript, jQuery }  Tag:{, , }  Comments:{ 1 Comment }

「js の prototype なじめないんです!」
extendsとかしたいんです!」
静的型付けじゃないと、安心してねれないんです!(´・ω・`)」

って病気の人いませんか?(私です)

「じゃ haXe で js やってみればいいんじゃね?」

でもライブラリ (jQueryとか) どうやって使うんだろ?」

。。ということで、haXe で jQuery を使う手順メモです。

※そもそもhaXeって何?って方はこちら
※haXeの開発環境 は FDT5 を使用
※haXe 自体はインストール済という前提で書いていきます。

jQueryExtern を利用

jQueryExtern という、jQueryラッパーライブラリがあります。
※いわゆる「コンパイルを通すためだけのjQuery型指定のみが記述されたライブラリ」みたいな物。
この利用方法は下記2つです。

[利用方法 1]

jQueryExternForHaxe [GitHub]からダウンロード。

解凍したフォルダ内、下記2ファイルをプロジェクト ソースフォルダにコピー

  • JQuery.hx
  • jQuery フォルダ

これでパスが通りました。

※ソースフォルダじゃなく、任意のフォルダ(例えば”Hoge/以下”)に配置したい!という場合には、.hxml に -cp Hoge を追記するとパスが通ります。

[利用方法 2]

haxelib に jQueryExtern を installします。

ターミナルで

$ haxelib install jQueryExtern

と打つだけでインストールできます。

※ 下記のようなメッセージが出たら haxelib のセットアップがまだ済んでいないので、haxelib setupを参考に、済ませたあと再度インストールしましょう。
This is the first time you are runing haxelib. Please run haxelib setup first

次に、haxelibにインストールしたjQueryExternにパスを通します。
.hxml に -lib jQueryExternを追記。

jQueryを動かしてみる

jQueryExtern (というかhaXeのJSライブラリはすべて?) は、コンパイルを通すためにあくまで型を指定しているだけ、なので、実際のjQueryをダウンロードし、htmlからリンクして実態を用意しておきます。

次に .hx ファイルで

import JQuery;

とインポートすると、例えば下記のようにnew jQuery() を利用できます。

button1 = new JQuery("#button1");

サンプル

動作サンプル

ソース全体としては下記。

index.html

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html lang="en">
	<head>
		<title>TestHaxeJQuery</title>
		<script type="text/javascript" src="js/jquery-1.7.1.js"></script>
	</head>
	<body>
		<div id="button1" style="width:150px;height:30px;background-color:#aaa;">button1</div>
		<script type="text/javascript" src="js/App.js"></script>
</html>

Main.hx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import JQuery;
import js.Lib;
class Main {
 
	var button1:JQuery;
 
	static public function main():Void {
		new Main();
	}
 
	public function new(){
		js.Lib.window.onload = onLoaded;
	}
 
	/**
	 * window onloaded
	 */
	private function onLoaded(e:Dynamic){
		setButton();
	}
 
	/**
	 * button setting
	 */
	private function setButton():Void{
		button1 = new JQuery("#button1");
		button1.cssSet("cursor","pointer");
		button1.click(onButtonClick);
		button1.hover(onButtonRollOver);
		button1.mouseout(onButtonRollOut);
	}
 
	/**
	 * button events
 	 */	
	private function onButtonClick():Void{
		js.Lib.alert("clicked");
	}
 
	private function onButtonRollOver():Void{
		button1.cssSet("background-color","#ccc");
	}
 
	private function onButtonRollOut():Void{
		button1.cssSet("background-color","#aaa");
	}
}

最後に

それ違うよ!などツッコミありましたらぜひよろしくお願いします。

参考

Using jQuery in haXe | Andy Li's Blog
haXe in action, check out a sample haXe project in FDT 5
Complex HaXe example
八角研究所 : Series: クライアント(ブラウザ)もサーバも同一言語で書ける haXe を使ってみる «

[memo] FDT5 で iOS ANE のDistribution 書き出しバグ?

Posted { 2012.01.04 06:57:04 }
Categorie:{ AIR, FDT }  Tag:{, , , , }  Comments:{ No Comments }

なぜか、FDT5 で .aneを利用したAIR for iOSアプリを、Distribution (app-store/ad-hoc)で書き出すと、実機で動いてくれない。
※「PropertieのFDT Mobile Propertie の iOS の Deplayタブ」 から書きだしたり、「自作のANT」で書きだしたりしてみたけど、うまくいかず。
※プロビジョニングや証明書はちゃんとDistribution用を使用している

.aneを利用しなければ動く。(xxx-app.xmlに-extdirを指定していても、as側で宣言しなければ大丈夫)
これで1週間ほどはまった。(´・ω・`)

Flash Builder4.6 で書きだすと問題なく動作する。
ので、なにかFDTのバグ?なのだろうか?。

分かり次第追記予定。
だれか原因がわかる方、ぜひ@itozまで教えていただけると有りがたいです。

アクセスランキング2011 (blog.romatica.com)

Posted { 2011.12.31 03:45:31 }
Categorie:{ Android, misc }  Tag:{, , , , }  Comments:{ No Comments }

大したアクセス数も無いですが、当ブログのアクセスランキングを公開します。
2011年中は、21エントリー(月平均1.75)でした。

集計期間 2011.1.1 ~ 2011.12.31
ドメイン blog.romatica.com 以下

(続きを読む…)

[AIR3][ANE][iOS] ネットワーク状況の変化を通知してくれるNative Extension

Posted { 2011.12.27 04:22:59 }
Categorie:{ AIR, Native Extention, Objective-C }  Tag:{, , , }  Comments:{ No Comments }

ios ane memo

ネットワーク状況変化(3G,Wi-Fi,未接続)をシンプルに通知してくれる、Air Native Extension (iOS用)を作ってみました。

C 側のソースコードは、下記のサイトで公開されているライブラリを利用させて頂きました。(ありがたや)
Cocoaの日々: [iOS] ネットワーク接続状況取得ライブラリを公開

Download

itoz/ANE_NetworkStatus – GitHubhttps://github.com/itoz/ANE_NetworkStatus

※僕自身、Obj-C経験少ないので、いいカスタマイズコードにはなっていないかもしれません、、
※ツッコミなどあったらよろしくお願いします。

構成

NetworkStatus_iOS/ (Cライブラリ用)
NetworkStatus_Lib/ (ane作成用)
NetworkStatusAppiOS/ (AIRアプリ用)

です。

使い方

.aファイルを作り、aneをコンパイルしたあと、AIR側でaneの設定をひと通りすませて、

_networkStatus = new NetworkStatus();
_networkStatus.addEventListener(StatusEvent.STATUS, onNetworkStatusEvent);
 
function onNetworkStatusEvent(event : StatusEvent) : void{
    trace(event.code);
    //CONNECTED_NON
    //CONNECTED_WIFI 
    //CONNECTED_3G
}

上記のようにインスタンスを作りイベントをリスナーすると、ネットワーク状況変化時に
eventのcodeプロパティに、状態を表す文字列が渡ってきます。

※.aneファイル自体の作成はANEttyを使うと便利!

その他

AdobeのサイトでもiOS用 ANE のNetworkInfoクラスを公開しておりこちらを利用しても同じようなことができる(?)かと思いますが、「もっとシンプルに、3G,Wi-Fi,未接続のみの変化状況が知りたい」という時に使えると思います。
※上記のANEだと、例えばwi-fiの場合はInterface Nameに en0 en1といった値が返ってきますので、それで判断します。(obj-Cの標準仕様かな?)

[追記]
ANE-LABにもコミットしました。
ane-lab – AIR Native Extension is Lab codes – Google Project Hosting

[AIR3][ANE][iOS] iOSでAIR Native Extention (ハマった点メモ)

Posted { 2011.12.13 02:11:46 }
Categorie:{ AIR, Native Extention, Objective-C }  Tag:{, , , }  Comments:{ No Comments }

ios ane memo

iOS で AIR Native Extenison (以下ANE) アプリを作成するときにハマった点メモ。
正確に確認できていないので間違った情報もあるかもしれませんが、あくまで参考までに
※特にiOSやANEに限ったことではないものも混ざっています。

.aneを含んだAIRアプリパッケージ時のエラー

アプリケーションIDの間違い?

An implementation for native extension ‘[クラスパス]‘ required by the application was not found for the target platform.
・アプリケーション記述ファイル(xxx-app.xml) に extenisionID がない場合。
・.ane自体を生成するときに失敗している場合。(ane化するときのextensionIDが違うなど)
・AIRパッケージ時adtオプションで-extdirを指定していない。もしくは指定先のフォルダパスが間違っている場合。

extenisionIDは下記3つが同じでなければならないので、再度確認し、aneを作成してみるなど。
・swc内のExtensionContext.createExtensionContextの第一引数に渡している文字列
・.ane作成時のextension.xmlのidタグに指定している文字列
・AIRパッケージ時のアプリケーション記述ファイルのextensionIDタグに指定している文字列

@Hiiragi3 が公開している ANE制作ツール 「ANEtty 」を使うと便利(もうこれがないと無理)

Xcodeの問題?

ld warning: unexpected srelocation type 9
.aneに含める.aクラスをXcode 4.2 で作成した時に出る。.aをXcode 4.1でを作りなおすと問題なかった。(thx! @arkw

過去バージョンXcodeをダウンロード出来るページ(Developer登録しないと落とせない?)

複数の.aneファイル指定するとエラー

ネイティブの.aファイルの関数名(イニシャライザやファイナライザなど)が同じだと、エラーになる。
※FlashBuilder4.6だと、事前にエラー表示をしてくれるので便利らしい。

実機転送時

プロビジョニングファイルが認識されていない?

A valid provisioning profile for this executable was not found.
XcodeのOrganizerでアプリを実機に転送できない場合に出るエラー。(これはANEに限ったことではないですが)

・パッケージ時に使用したプロビジョニングファイルが実機にインストールされていない(たぶん)
・App Store もしくは Ad Hoc パッケージ時にdevelop版のプロビジョニングファイルを指定した(たぶん)

idの不一致

The executable was signed with invalid entitlements.
The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile.

app-storeパッケージの時にでる。
・プロビジョニングに指定したAppIDと、アプリケーション記述ファイルのidタグが一致していない。

Could not install provisioning profile
The profile “ほげほげ” does not include this device and cannot be installed thereon.

distributionプロビジョニングを実機にドラッグドロップするとでる。原因よくわからない
(だれか教えて( ´д`; ))

Xcode counld not find a valid private-key / certificate pair for this profile in your keychain.
Organizerでプロビジョニングを選択したときに、上部に出るエラー。
プロビジョニングファイルをXcodeアイコンにドロップしたら消えた(よくわからず)

アプリ実行時

起動しても画面がずっと真っ黒(もしくはDefault画像のまま)

AIRパッケージ時に-connect オプションでデバッグ先IPアドレスを指定すると、接続先が見つからない場合、しばらく何も表示されない。

起動してすぐ落ちる

Dec 12 20:29:49 unknown ReportCrash[2017] : libMobileGestalt loadBasebandMobileEquipmentInfo: CommCenter error: 1:45
Dec 12 20:29:49 unknown ReportCrash[2017] : libMobileGestalt copyInternationalMobileEquipmentIdentity: Could not get mobile equipment info dictionary
Dec 12 20:29:49 unknown ReportCrash[2017] : libMobileGestalt copyInternationalMobileEquipmentIdentity: Could not get mobile equipment info dictionary

↑みたいなエラーがOrganizerのConsoleに出る。

ipa-test (ipa-test-intrepreter)、ipa-debug(ipa-debug-interpreter) パッケージは、swf の debugオプションtrueでコンパイルしていなければいけない。
Adobeのサイトにはipa-debugについてしか言及していないが
、ipa-testでもそうだった。

参考

Adobe AIR * iOS パッケージ

ANTを使用したiOSパッケージ

Packaging AIR application for iOS devices with ADT command and ANT script at The Space For App Developers

Native Extension for Adobe Air and IOS 101 « « Liquid-PhotoLiquid-Photo

[AIR3][ANE][iOS] iOSでAIR Native Extention (iOSからイベントを受け取る)

Posted { 2011.12.11 07:45:28 }
Categorie:{ AIR, Native Extention, Objective-C }  Tag:{, , }  Comments:{ No Comments }

ios ane fredispatchstatuseventasync

AIR Native Extention (以下ANE) で ネイティブ からAIR側にイベントを送出するには FREDispatchStatusEventAsync() を実装します。
この関数は、ネイティブからas側にStatusEventを送出できる関数です。

as3 サンプル

まず.aneに含めるSWCライブラリ側で、コンテキストにStatusEventをリスナーしておきます。

//〜略〜    
_context = ExtensionContext.createExtensionContext("[エクステンションID]", "type");
_context.addEventListener(StatusEvent.STATUS, onStatusEvent);
 
//〜略〜    
private function onStatusEvent(event:StatusEvent):void{
	trace(event.code,event.level);
	dispatchEvent(event);
}

Objective-C サンプル

次にC側で、イベントを送出したい部分に下記のように記述します。

 FREDispatchStatusEventAsync(
    context ,
    (uint8_t*)[@"hogehoge" UTF8String], 
    (uint8_t*)[@"fugagufa" UTF8String]); 
)

第1引数は、ContextInitializer の第三引数で受け取った context を保持しておいた物を渡します。
第2、第3引数に指定した値がそれぞれ、StatusEvent の code 、level プロパティに格納されます。

※ContextInitializerって何?って方はAKABANAさんのブログを参照。

ANEでネイティブから送出できるイベントは、StatusEvent のみですが、上記の様に code や level がカスタマイズできるので、as側ではそのプロパティでイベントの種類を判断して振り分けるような実装にしましょう。

イベント送出をチェック

FREDispatchStatusEventAsync() は戻り値で、イベント送出が成功したかどうか判断できます。
例えば先程のコードを

FREResult result =FREDispatchStatusEventAsync(
    context ,
    (uint8_t*)[@"hogehoge" UTF8String], 
    (uint8_t*)[@"fugagufa" UTF8String]); 
)

とresultに代入しておいて

 if (result == FRE_OK){
  //イベント送出成功
 }else{  
 //イベント送出失敗    
 }

など、振り分け処理を行うことが出来ます。

以上、「もっとこうしたほうがいいよ!」「それ違うよ!」などありましたら、コメントかtwitterでリプ頂けると有難いです。

参考

Adobe Flash Platform * FREDispatchStatusEventAsync()

[as3][js] FlashでBitmapDataをbase64エンコードしjs経由でhtmlに表示する

Posted { 2011.11.11 01:32:52 }
Categorie:{ flash, javascript }  Tag:{, }  Comments:{ No Comments }

flash上の任意のDisplayObjectを
Bitmap化して、ByteArrayにし、base64変換し、
その文字列をExternalInterface経由でjavascriptに受け渡して、
html上に表示するサンプルを作って見ました。

[sample] flashでBitmapDataをbase64エンコードし、js経由でhtmlに表示する

どんな場合に有効な手法?

自分もいまいち使いどころがぴんと来ませんが、
jsでは生成できないようなイメージを動的にflashで作成して、htmlに渡すなど。でしょうか。

例えば、以前 jsdo.it で作成したトランスメタルジェネレータ HTML5版では、
flashでサウンドの波形画像を作成し、html上に表示しています。

Trance Metal Generator HTML5 α ver ( トランスメタルジェネレーター HTML5アルファ版) – jsdo.it – share JavaScript, HTML5 and CSS

as側のサンプル

下記はDisplayObjectを渡すとpng形式のbase64文字列を返してくれるfunctionサンプルです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import com.adobe.images.PNGEncoder;
import mx.utils.Base64Encoder;
/**
* DisplayObjectをBase64文字列(png)に変換.
* @param target  画像化したいDisplayObject
* @param w 幅
* @param h 高さ
*/
    private function convertBase64(target : DisplayObject, w : Number = NaN, h : Number = NaN) : String
    {
        w = (isNaN(w)) ? target.width : w;
        h = (isNaN(h)) ? target.height : h;
 
        var bmd : BitmapData = new BitmapData(w, h, true, 0x00ffffff);
        bmd.draw(target);
        var base64 : Base64Encoder = new Base64Encoder();
        base64.encodeBytes(PNGEncoder.encode(bmd));
        var str : String = base64.toString();
        bmd.dispose();
        var str3:String = "";
        var str2:String = str.toString();
        var len:uint = str2.length;
        for (var i:uint = 0; i < len; i++)
        {
            var sub:String = str2.substr(i, 1);
            if (sub == "\n")
                continue;
            str3 += sub;
        }
        return str3;
    }

gistにも同じものをアップしています。
DisplayObjectをBase64文字列(png)に変換 — Gist

js側のサンプル

flash側からExternalInerfaceで下記のjsメソッドにbase64文字列を渡してあげるとhtml上に画像が表示されます。

1
2
3
4
5
6
7
/* ※要jQuery */
<script type="text/javascript">
    function setBase64Image(str,w,h){
        var dragItem = $("<img src='data:image/png;base64," + str + "' width='"+w+"px' height='"+h+"px'  />");
        $(".[任意のDIV名など]").append(dragItem);
    }
</script>

最後に

その他、有効なユースケースがあったらぜひ@itozに教えて頂けると喜びます。

[FDT5][ANE] FDT5 で ANE アプリをコンパイルする(サンプルソース付)

Posted { 2011.11.01 12:15:10 }
Categorie:{ AIR, Android, FDT, Native Extention }  Tag:{, , , , , }  Comments:{ No Comments }

先日リリースされた FDT5モバイルアプリビルド機能 が強化され、
AIR アプリのプロパティ設定や、パブリッシュなどが、GUIで行えるようになりました。

その一部に Extentions タブがあり、
AIR Native Extenision (以下ANE) アプリをサクッとコンパイル出来るようになっています!
(この機能は FDT5 FREE でも利用可能!

今までコマンド、 Ant などでやっていたのを考えると便利ですね!

ANEアプリコンパイル設定

ということで Android のバッテリー値を取得&表示する ANE アプリを作成する手順を書いてみます。

[1]. ANE ファイルを用意。

ここに素敵なANEサンプルが多数公開されています。
http://extensionsforair.com/extensions/powerflasher-collection/

今回はこの中の「battery」を使わさせて頂きました。

[2]. Mobile Project を作成

File > New > New FDT Project > Mobile > AS3 でプロジェクト作成し
「aneフォルダ」を作成。(任意の名前でもOK)

[3]. ANEファイル、ライブラリの設置

[1]でDownloadしたbatteryフォルダ内の.aneファイルと.swfファイルをプロジェクトにコピー。

battery/extension/de.patrickkulling.air.mobile.extensions.battery.ane
>「ane」フォルダへコピー

battery/extension/android_battery_extension.swc
>「lib」フォルダへコピー
※これでExtensionのクラスにパスが通せるようになります

[4]. Extensions の設定

プロジェクトフォルダ右クリック > Properties を選択すると下記のウィンドウが出てきます。

FDT Mobile Properties > Android > Extensionsを選択。

「Extensions location」に「aneフォルダ」を選択。
「Extensions」に、battery/extension/descriptor_extensions.xml に記述されている「extensionID」 を追加。
※これでアプリケーション記述ファイルに自動的に extensionID が追記されます。

ANEの設定はここまで。
もうちょっとです。

AIR3.0コンパイル設定

ここからはAIR3.0でコンパイルするためのお決まり設定です。

[5]. コンパイル時定数を追加

「Run / Debug Configurations」を作成し、
Compiler Arguments タブの Use launcher specific compiler arguments を選択。
-swf-version=13」を追記。

[6]. アプリケーション記述ファイルの修正


bin/xxxxxx-app.xmlの冒頭を
「<application xmlns=”http://ns.adobe.com/air/application/3.0“>」に変更。

設定は以上!

ANEを呼び出すドキュメントクラス

上記設定から、バッテリー値を取得&表示するサンプルドキュメントクラスです。

package jp.itoz.ane.android.battery {
    import de.patrickkulling.air.mobile.extensions.battery.Battery;
    import de.patrickkulling.air.mobile.extensions.battery.event.BatteryEvent;
 
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.text.TextFormat;
 
    /**
     * ANE Android Battery Sample
     * @see http://extensionsforair.com/extensions/powerflasher-collection/
     */
    public class ANEBatteryApp extends Sprite {
        private var _tf : TextField;
        private var _bat : Battery;
 
        public function ANEBatteryApp() {
 
            // ----------------------------------
            // battery
            // ----------------------------------
            _bat = new Battery();
            _bat.addEventListener(BatteryEvent.UPDATE, onBatteryUpdate);
 
            // ----------------------------------
            // textfield
            // ----------------------------------
            _tf = addChild(new TextField()) as TextField;
            _tf.defaultTextFormat = new TextFormat(null, 20, 0xcc0000);
            _tf.autoSize = TextFieldAutoSize.LEFT;
        }
 
        /**
         * バッテリーイベント
         */
        private function onBatteryUpdate(event : BatteryEvent) : void {
            var d : Date = new Date();
            var stamp : String = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
 
            // @see http://www.adakoda.com/android/000140.html
 
            _tf.text = "update " + stamp + "\n";
            _tf.text += "バッテリー残量 " + event.level + "\n";
            _tf.text += "バッテリー最大値 " + event.scale + "\n";
            _tf.text += "バッテリー温度 " + (event.temperature / 10) + "度\n";
            _tf.text += "バッテリー電圧 " + event.voltage + "mV\n";
        }
    }
}

あとは コンパイルするだけ!

これでバッテリー値が取得できるサンプルANEアプリが完成しました。

今回のサンプル一式をアップしました。
FDT5 の File > import から Archive File で読み込んでください。

その他

FDT5 FREE のダウンロードはこちらから
(今回紹介した機能はFREEでも利用可)

FDT5 MAX だと、アプリケーション記述ファイルの設定もGUIから行えます。
(AppricationID や Permission、Aspect Ratio など)

その他 FTD5 から追加された機能はこちら
fdt.jp » FDT5がリリース。新機能一覧

[memo][AIR3] デスクトップ用のAIR Captive Runtime を コンパイルする

Posted { 2011.10.06 09:45:12 }
Categorie:{ AIR }  Tag:{, , , }  Comments:{ No Comments }

自分用メモ。
デスクトップ用のAIR Captive Runtime を コンパイルするAnt
※mac

-target bundleがポイント
macだと58Mのappが出来る。(容量でかっ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 <project name="build desktop captive runtime" default="build">
 
        <property name="adt" value="[adtのパス]" />
        <property name="cirtificate" value="[さーてぃふぃけいとパス]" />
        <property name="cirtificate.pass" value="[ぱすわーど]" />
 
        <target name="build">
            <java jar="${adt}" fork="true">
 
                <arg value="-package" />
                <arg value="-storetype" />
                <arg value="pkcs12" />
 
                <arg value="-keystore" />
                <arg value="${cirtificate}" />
 
                <arg value="-storepass" />
                <arg value="${cirtificate.pass}" />
 
                <arg value="-target" />
                <arg value="bundle" />
                <arg value="./deploy" />
                <arg value="./bin/Index-app.xml" />
 
                <arg value="-C" />
                <arg value="./bin" />
                <arg value="Index.swf" />
            </java>
        </target>
    </project>

参考
Adobe AIR * デスクトップコンピューター用のキャプティブランタイムバンドルのパッケージ化


レンタルサーバー豆知識