SQLの窓

2012年06月20日


Android Flex : コマンドラインで簡単に AIR アプリケーションを Android エミュレータにインストールして実行

Android の SDK と、Flex4 の SDK が必要です。エミュレータは先に動くものを作っておきます。

結論から言うと、Flex を使うので Java は必要ですが、Eclipse は必要ありません。コマンドプロンプトから全て完結させます。今回は、Android 2.3.3 でテストしています。

エミュレータ起動

※ コマンドラインでデバイスを指定していないので、エミュレータの起動は一つだけにしてください。



AIR のランタイムをインストール

Flex4 の SDK に入ってるものでも、AIR の SDK に入っているものでもどちらでも構いません。
adt -installRuntime -platform android -package C:\flex_sdk_4.6\runtimes\air\android\emulator\Runtime.apk

adt -installRuntime -platform android -package C:\AdobeAIRSDK\runtimes\air\android\emulator\Runtime.apk



ソースコード

AIR のインストールができたら、アプリケーションのビルドですが、用意したソースは以下のようになっています。( UTF8N です )
Mainw.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:ViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
	xmlns:s="library://ns.adobe.com/flex/spark"
	firstView="startview"
	applicationComplete="initApplication()"
>

<fx:Script>
<![CDATA[

	// *********************************************************
	// アプリケーションの初期化( 画面構築後 )
	// *********************************************************
	public function initApplication():void {


	}

]]>
</fx:Script>

	<s:navigationContent>
		<s:Button label="終了" click="NativeApplication.nativeApplication.exit()"/>
	</s:navigationContent>

</s:ViewNavigatorApplication>
startview.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
	xmlns:s="library://ns.adobe.com/flex/spark"
	title="最初のビュー"
	creationComplete="initView();"
>

<fx:Script>
<![CDATA[

	import mx.logging.targets.*;
	import mx.logging.*;

	private var logger:ILogger = Log.getLogger("MyLogger");

	public function initView():void {

		var traceTarget:TraceTarget = new TraceTarget();
		traceTarget.level = LogEventLevel.ALL;
		traceTarget.filters = ["*"];
		traceTarget.includeDate = false;
		traceTarget.includeTime = false;
		traceTarget.includeLevel = false;
		traceTarget.includeCategory = false;
		Log.addTarget(traceTarget);

	}

	// *********************************************************
	// アプリケーションの初期化( 画面構築後 )
	// *********************************************************
	public function checkText():void {

		intext.text = "ボタンが押されました";
		logger.info( "ボタンが押されました" );

	}

]]>
</fx:Script>

	<s:Label
		x="43" y="27"
		text="名前を入力して下さい" />

	<s:TextInput
		x="41" y="64"
		id="intext"
		width="300" />

	<s:Button
		x="42" y="150"
		width="131" height="60"
		label="Submit"
		click="checkText()" />

</s:View>
Mainw.xml
<?xml version="1.0" encoding="utf-8" ?> 
<application xmlns="http://ns.adobe.com/air/application/3.1"> 
	
	<id>lightbox.androidtest</id> 
	<versionNumber>1.0</versionNumber> 
	<filename>Android Test</filename> 
	<name>Android テスト</name> 

	<initialWindow> 
		<content>Mainw.swf</content> 
		<systemChrome>none</systemChrome> 
		<visible>true</visible> 
		<autoOrients>true</autoOrients>
	</initialWindow>
	<icon>
		<image48x48>winofsql.png</image48x48> 
	</icon> 

	<android> 
		<manifestAdditions> 
			<![CDATA[ 
				<manifest> 
					<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
					<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
					<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
					<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
					<uses-permission android:name="android.permission.CAMERA" /> 
					<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 
					<uses-permission android:name="android.permission.INTERNET" /> 
					<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
					<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
					<uses-permission android:name="android.permission.WAKE_LOCK" /> 
					<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
				</manifest> 
			]]> 
		</manifestAdditions> 
	</android>

</application>
※ Android の permission は、沢山書いていますが検証していません。
一番目は、Mainw.mxml で二番目は startview.mxml です。Flex ではこのファイルがそのままクラスになるので、Mainw.mxml で、firstView に、startview と書かれています。ビューだけをフォルダにまとめればそのフォルダで参照する事になります( views なら、views.startview )
xml の二行目の 3.1 は、バージョンを示しているので環境または将来的にはこの値によってエラーになるかもしれません。その場合は、自分の使っているバージョンをチェックするか、世の中を調べましょう。3.1 は、Flex4 SDK の中のもので、AIR SDK は、3.3 が入っていました。Android には、3.3 を入れましたが動作しています。


コマンドプロンプトを開く

1) path=C:\flex_sdk_4.6\bin;%path%
2) prompt flex3$G
3) build.bat

build.bat の中身は以下のようになっています
call adt -certificate -cn lightbox 1024-RSA lightbox.p12 password
mxmlc +configname=airmobile Mainw.mxml
call adt -package -target apk-debug -storetype pkcs12 -keystore lightbox.p12 -storepass password lightbox_1.apk Mainw.xml Mainw.swf winofsql.png
call adt -uninstallApp -platform android -appid lightbox.androidtest
call adt -installApp -platform android -package lightbox_1.apk

lightbox.p12 は、名前はなんでもいいですし、毎回作る必要はありません。(パスワードはコマンドラインに書かなければ入力になります)
lightbox.androidtest は、アプリの ID になりますが、LogCat で表示されるのは、air.lightbox.androidtest となります
+configname=airmobile

※ adt で call を使っているのは、adt.bat だからです。

ddms 起動

Android SDK の、tools の中の ddms.bat を実行します。実行したら、左上のエミュレータを選択状態にして、LogCat が表示されるようにしておきます。この、LogCat に logger.info(); でログ表示が可能です。



実行


エミュレータからアイコンをクリックするだけです。このアイコンは、winofsql.png として apk パッケージの中に含めたものです。






タグ:android AIR
【Flexの最新記事】
posted by lightbox at 2012-06-20 21:57 | Flex | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり