検索
連載

スマホ向けアプリ開発の扉を開くAdobe AIR 2.5とはFlashでできる! Androidアプリ制作入門(3)(3/3 ページ)

Flash ProやFlash Builderに拡張機能を追加して、Androidで動く簡単なAdobe AIRのアプリを作る方法を紹介します。今回は、AIR 2.5のモバイルアプリ開発用の機能を紹介し種々の設定やSDKのコマンドを使ったAndroidアプリ開発の仕方を解説します。

Share
Tweet
LINE
Hatena
前のページへ |       

Android固有の設定

 モバイルアプリ開発では、デバイスの固有の機能を利用するためにアプリケーション記述子に設定を行います。Androidの場合は、アプリケーション記述子に<android>要素を使用してAndroid固有の設定を行います。

 ちなみに後述するADTコマンドでは、APKパッケージを作成すると、AndroidManifest.xmlファイルを自動的に生成します。

アプリのアクセス権限を設定

 例えば、以下のようなAndroidアプリをユーザーがインストールするときに要求するセキュリティ上の権限を設定できます。

  • ACCESS_COARSE_LOCATION
    アプリが、Wi-Fiなどを介した、ざっくりとした現在位置データを使うことを許可(Geolocationクラスを使用)
  • ACCESS_FINE_LOCATION
    アプリがGPSの現在位置データを使うことを許可(Geolocationクラスを使用)
  • ACCESS_NETWORK_STATE and ACCESS_WIFI_STATE
    アプリが、ネットワークの情報を使うことを許可(NetworkInfoクラスを使用)
  • CAMERAE
    アプリがカメラを使うことを許可
  • DISABLE_KEYGUARDおよびWAKE_LOCK
    アプリがデバイスのスリープ状態を防ぐことを許可(SystemIdleModeクラスを使用)
  • INTERNET
    アプリのネットワーク要求を許可。リモートデバッグも許可
  • READ_PHONE_STATE
    ユーザーの電話中に音声ファイル再生の音量をなくすことを許可。この権限は、アプリがバックグラウンド状態の間に音声ファイルを再生する場合に設定する
  • RECORD_AUDIO
    アプリがマイクを使うことを許可
  • WRITE_EXTERNAL_STORAGE
    アプリがデバイスの外部メモリカードへ書き込むことを許可

 以下のようにAndroidManifest.xmlファイルに設定を追加します。

<android>
  <manifestAdditions>
    <![CDATA[
      <manifest>
        <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.WRITE_EXTERNAL_STORAGE" />
      </manifest>
    ]]>
  </manifestAdditions>
</android>

「カスタムURI」機能を使う設定

 AIR 2.5の新機能「カスタムURI」を使うと、ネイティブのAndroidアプリまたはWebページから、AIRアプリを起動できます。

 カスタムURIを使うためには、アプリケーション記述子に<intent-filter>要素を使用して設定します。これによって、Androidオペレーティングシステムに対して、カスタムURIとAIRアプリの関連付けを設定できます。

 また、カスタムURIを使ってAIRアプリを呼び出すと、NativeApplicationオブジェクトはinvokeイベントを起こします。URLの引数は、InvokeEventオブジェクトのarguments配列から取得できます。

 例えば、以下のように「<data android:scheme="testuri"/>」と設定した場合、

<android>
  <manifestAdditions>
    <![CDATA[
      <manifest>
        <application>
          <activity>
            <intent-filter>
              <action android:name="android.intent.action.MAIN"/>
              <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <intent-filter>
              <action android:name="android.intent.action.VIEW"/>
              <category android:name="android.intent.category.BROWSABLE"/>
              <category android:name="android.intent.category.DEFAULT"/>
              <data android:scheme="testuri"/>
            </intent-filter>
          </activity>
        </application>
      </manifest>
    ]]>
  </manifestAdditions>
</android>
カスタムURIスキームの設定

 Webページで次のようなリンクを記述すれば、リンクを押下することでAIRアプリを起動できます。

<a href="testuri://">AIRアプリ起動</a>
通常
<a href="testuri://arg1=1&arg2=2">AIRアプリ起動</a>
引数付き

アプリのインストール場所

 <manifest>要素のinstallLocation属性を「auto」または「preferExternal」に設定することで、アプリを外部のメモリカードにインストールしたり移動することを許可できます。例えば、以下のように指定します。

<android>
  <manifestAdditions>
    <![CDATA[
      <manifest android:installLocation="preferExternal"/>
    ]]>
  </manifestAdditions>
</android>

amxmlcコマンドでアプリをSWFにコンパイル

 モバイルアプリをデバッグやパッケージする前に、amxmlcコマンドでコンパイラを使ってAS(ActionScript)ファイルやMXMLファイルをSWFファイルにコンパイルします。

 例として、以下の「MobileApplication.as」をコンパイルして「MobileApplication.swf」を作成してみましょう。

package {
import flash.display.Sprite;
import flash.text.TextField;
 
public class MobileApplicaiton extends Sprite {
    public function MobileApplicaiton() {
        var textField:TextField = new TextField();
        textField.text = "Hello, World!";
        stage.addChild( textField );
    }
}
}

 以下のコマンドでコンパイルします。

amxmlc MobileApplication.as

 またこの作業は、Flash Builder 4のFlexプロジェクトの機能を使って簡素化できます。amxmlcコンパイラの詳細は、「AIR 用 MXML および ActionScript ソースファイルのコンパイル」も参照してください。

adlコマンドでアプリをデスクトップ実行&デバッグ

 コマンドラインでアプリを実行・デバッグするには、adlコマンドを使用します。使い方は、adlコマンドの引数にAIRのアプリケーション記述ファイルを指定して起動します。

 例として、MobileApplication-app.xmlを指定してADLを起動してみます。

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/air/application/2.5">
  <id>MobileApplicaiton</id>
  <versionNumber>0.0.1</versionNumber>
  <filename>MobileApplicaiton</filename>
  <initialWindow>
    <content>MobileApplicaiton.swf</content>
  </initialWindow>
  <supportedProfiles>mobileDevice</supportedProfiles>
</application>

 以下のコマンドでADLを起動します。

adl MobileApplication-app.xml

 またこの作業も、Flash Builder 4のFlexプロジェクトの機能を使って簡素化できます。adlコマンドの詳細は、「ADL を使用したデバイスシミュレーション」も参照してください。「-screensize」オプションを使うと、画面の大きさを指定できるので、モバイル開発向けです。

AIRアプリをAPKファイルにパッケージング

 アプリが正常にコンパイルされ実行されたら、デバイス用のパッケージファイルを作成します。パッケージファイル作成するためには、ADTコマンドを使用します。今回は、Androidアプリなので、APKパッケージファイルを作成します。

 最初にAPKパッケージファイルを作成するためには、署名ファイルが必要です。そのために自己署名入り証明書とキーペアを、以下のようなADTコマンドで作成します。

adt -certificate -cn SelfSigned 1024-RSA sampleCert.pfx samplePassword

 またこの作業も、Flash Builder 4のFlexプロジェクトを使って簡素化できます。ADTを使った証明書作成については、「ADT certificate コマンド」も参照してください。

 次に、以下のようなADTコマンドを使ってAPKパッケージファイルを作成します。その際に、先ほど作成した署名ファイルを使用します。

adt -package -target apk -storetype pkcs12 -keystore sampleCert.pfx MobileApplication.apk MobileApplication -app.xml MobileApplication.swf

 ADTコマンドのAPKパッケージングについては、「Android 向けのモバイル AIR アプリケーションのパッケージ化」も参照してください。

adtコマンドでアプリをAndroid端末にインストール

 作成したAPKパッケージファイルをUSBで接続したAndroid端末上にインストールするためには、以下のようなADTコマンドを使用します。

adt -installApp -platform android -platformsdk 【path-to-android-sdk】 -package MobileApplication.apk

 【path-to-android-sdk】には、Android SDKのルートディレクトリを指定します。ADTコマンドを使ったアプリのインストールについては、「開発を目的とした AIR ランタイムとアプリケーションのインストール」も参照してください。

今回のことをFlash Builder 4.5でやると……

 今回は、AIR 2.5の概要と、AIR 2.5 SDKを使ったコマンドラインベースのモバイルアプリ開発について解説しましたが、いかがでしたでしょうか。次回は、Flash Builder 4.5を使うことで、モバイルアプリ開発が、どのように簡単になるのかを解説します。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る