一般設定

アプリケーション記述子の設定のいくつかは、すべてのモバイルデバイスアプリケーションで重要なものです。

必要な AIR ランタイムのバージョン

アプリケーション記述ファイルの名前空間を使用して、アプリケーションに必要な AIR ランタイムのバージョンを指定します。

application エレメントに割り当てられている名前空間によって、アプリケーションが使用する機能の大部分が決まります。例えば、アプリケーションが AIR 2.7 名前空間を使用しているが、ユーザーがそれよりも後のバージョンをインストールしている場合、アプリケーションは AIR 2.7 の動作を参照します(その動作が後のバージョンで変更されている場合でも)。名前空間を変更し、アップデートを発行した場合にのみ、アプリケーションで新しい動作と機能を利用できます。セキュリティの修正は、この規則には該当しない重要な例外です。

AIR 3.6 以上の Android など、アプリケーションとは別のランタイムを使用するデバイスでは、AIR の必要なバージョンがない場合、ユーザーに対して AIR のインストールまたはアップグレードが要求されます。iPhone など、ランタイムを組み込むデバイスでは、このような状況は発生しません(本来、必要なバージョンの AIR がアプリケーションと共にパッケージ化されるため)。

注意: (AIR 3.7 以降)デフォルトで、ADT は Android アプリケーションと共にランタイムをパッケージ化します。

ルートの application エレメントの xmlns 属性を使用して、名前空間を指定します。対象とするモバイルプラットフォームに応じて、次の名前空間をモバイルアプリケーション用に使用します。

iOS 4+ and iPhone 3Gs+ or Android: 
                            <application xmlns="http://ns.adobe.com/air/application/2.7"> 
                            iOS only: 
                            <application xmlns="http://ns.adobe.com/air/application/2.0">
注意: iOS 3 デバイスは、AIR 2.0 SDK に基づいた、Packager for iPhone SDK によってサポートされます。iOS 3 用 AIR アプリケーションの構築について詳しくは、「iPhone アプリケーションの構築」を参照してください。AIR 2.6 SDK(以降)は、iPhone 3GS、iPhone 4、iPad の各デバイス上の iOS 4 以降をサポートします。

アプリケーション ID

いくつかの設定は、パブリッシュするアプリケーションごとに一意にする必要があります。こうした設定には、ID、名前、ファイル名などがあります。

Android アプリケーション ID

Android では、ID は、AIR ID の先頭に「air.」が付加されて、Android パッケージ名に変換されます。したがって、AIR ID が com.example.MyApp である場合、Android パッケージ名は air.com.example.MyApp になります。

<id>com.example.MyApp</id> 
                                <name>My Application</name> 
                                <filename>MyApplication</filename>

また、ID が Android オペレーティングシステムの有効なパッケージ名ではない場合、有効な名前に変換されます。ハイフン文字はアンダースコアに変更され、ID コンポーネントの先頭に数字がある場合は、その前に大文字「A」が付加されます。例えば、ID 3-goats.1-boat は、パッケージ名 air.A3_goats.A1_boat に変換されます。

注意: アプリケーション ID に付加される接頭辞を使用して、Android Market 内で AIR アプリケーションを識別することができます。接頭辞によってアプリケーションが AIR アプリケーションとして識別されないようにする場合は、「Opt-out of AIR application analytics for Android」の説明に従って、APK ファイルのパッケージ化を解除し、アプリケーション ID を変更して、再パッケージ化する必要があります。

iOS アプリケーション ID

Apple iOS Provisioning Portal で作成したアプリケーション ID と一致するように AIR アプリケーション ID を設定します。

iOS アプリケーション ID では、バンドルシード ID の後にバンドル識別子が続きます。バンドルシード ID は、Apple がアプリケーション ID に割り当てる文字列(5RM86Z4DJM など)です。バンドル識別子は、選択したドメイン名の逆 DNS 形式の名前になります。バンドル識別子の末尾がアスタリスク(*)の場合は、ワイルドカードアプリケーション ID であることを示しています。バンドル識別子の末尾がワイルドカード文字の場合は、このワイルドカードを、任意の有効な文字列に置き換えることができます。

次に、例を示します。

  • Apple アプリケーション ID が 5RM86Z4DJM.com.example.helloWorld の場合、アプリケーション記述子で com.example.helloWorld を使用する必要があります。

  • Apple アプリケーション ID が 96LPVWEASL.com.example.*(ワイルドカードのアプリケーション ID)の場合、com.example.helloWorldcom.example.anotherApp などの、先頭が com.example の ID を使用できます。

  • Apple アプリケーション ID がバンドルシード ID とワイルドカードのみの場合(例えば、38JE93KJL.*)、AIR のすべてのアプリケーション ID を使用できます。

アプリケーション ID を指定する場合、アプリケーション ID のバンドルシード ID の部分は含めないでください。

アプリケーションのバージョン

AIR 2.5 以降のバージョンでは、versionNumber エレメントにアプリケーションのバージョンを指定します。version エレメントは使用されなくなりました。versionNumber の値を指定するとき、一連の数値をドットで 3 つまで区切って指定する必要があります。例えば、「0.1.2」のようにします。バージョン番号の各セグメントには、3 桁までの数字を指定できます(つまり、「999.999.999」が、許可される最大のバージョン番号になります)。番号に 3 つのセグメントをすべて含める必要はありません。「1」や「1.0」なども有効なバージョン番号です。

versionLabel エレメントを使用して、バージョンのラベルを指定することもできます。バージョンラベルを追加すると、そのラベルが、Android アプリケーションの情報画面などに、バージョン番号の代わりに表示されます。バージョンラベルは、Android Market を使用して配布されるアプリケーションに対して指定する必要があります。AIR アプリケーション記述子に versionLabel の値を指定しない場合、versionNumber の値が Android バージョンラベルフィールドに割り当てられます。

<!-- AIR 2.5 and later --> 
                            <versionNumber>1.23.7<versionNumber> 
                            <versionLabel>1.23 Beta 7</versionLabel>

Android では、AIR の versionNumber は Android の整数 versionCode に変換されます。この際に、a*1000000 + b*1000 + c という数式が使用されます。ここで、a、b、c は AIR のバージョン番号である a.b.c の各コンポーネントを指します。

メインアプリケーションの SWF

メインアプリケーションの SWF ファイルを、initialWindow エレメントの子である content に指定します。モバイルプロファイルでデバイスをターゲットにするとき、SWF ファイルを使用する必要があります(HTML ベースのアプリケーションはサポートされていません)。

<initialWindow> 
                            <content>MyApplication.swf</content> 
                            </initialWindow>

ファイルは AIR パッケージに含める必要があります(ADT または IDE を使用します)。アプリケーション記述子内の名前を参照するだけでは、ファイルはパッケージに自動的には取り込まれません。

メイン画面のプロパティ

initialWindow エレメントの子エレメントのいくつかは、メインアプリケーション画面の最初の外観と動作を制御します。

  • aspectRatio - アプリケーションで、最初に portrait(高さが幅よりも長い)、landscape(高さが幅よりも短い)、any(ステージの方向が自動的にすべての方向に設定される)のうちのどのフォーマットで表示するかを指定します。

    <aspectRatio>landscape</aspectRatio>
  • autoOrients - デバイスを回転したとき、または方向に関連したジェスチャ(スライドキーボードを開いたり閉じたりするなど)を実行したときに、ステージの方向を自動的に変更するかどうかを指定します。デフォルトの false を使用すると、ステージの方向はデバイスによって変更されません。

    <autoOrients>true</autoOrients>
  • depthAndStencil — 深度またはステンシルバッファーを使用する場合に指定します。通常、これらのバッファーは 3D コンテンツを操作する際に使用します。

    <depthAndStencil>true</depthAndStencil>
  • fullScreen - アプリケーションが、デバイスの画面全体を使用するか、通常のオペレーティングシステムクロム(システムステータスバーなど)と画面を共有するかを指定します。

    <fullScreen>true</fullScreen>
  • renderMode - ランタイムがアプリケーションをレンダリングするときに、グラフィック処理装置(GPU)を使用するか、メインの中央演算処理装置(CPU)を使用するかを指定します。一般的には、GPU レンダリングではレンダリングの速度が速くなりますが、GPU モードでは、特定の描画モードおよび PixelBender フィルターなどの一部の機能が使用できません。また、各デバイスおよびデバイスドライバーに応じて、GPU 機能と制限事項が異なります。可能な限り様々なデバイス上で、アプリケーションを必ずテストしてください(特に GPU モードを使用する場合)。

    レンダリングモードは、gpucpudirect または auto に設定できます。デフォルト値は auto ですが、現在では CPU モードに戻ります。

    注意: Flash コンテンツの GPU アクセラレーションを、モバイルプラットフォーム向けの AIR で利用するには、renderMode="gpu" ではなく renderMode="direct"(Stage3D)を使用することをお勧めします。Adobe で公式にサポートおよび推奨している Stage3D ベースのフレームワークは、Starling(2D)および Away3D(3D)です。Stage3D および Starling/Away3D について詳しくは、http://gaming.adobe.com/getstarted/ を参照してください。
    <renderMode>direct</renderMode>
    注意: バックグラウンドで実行するアプリケーションには renderMode=”direct” を使用できません。

    GPU モードの制限事項は、次のとおりです。

    • Flex フレームワークは GPU レンダリングモードをサポートしません。

    • フィルターはサポートされていません。

    • PixelBender のブレンド、および塗りはサポートされていません。

    • ブレンドモードの内、レイヤー、アルファ、消去、オーバーレイ、ハードライト、比較(明)および比較(暗)はサポートされません。

    • ビデオを再生するアプリケーションでの GPU レンダリングモードの使用はお勧めしません。

    • GPU レンダリングモードでは、仮想キーボードが開いている場合、テキストフィールドは見える位置に正しく移動しません。ユーザーがテキストを入力しているときにテキストフィールドが表示されるようにするには、ステージの softKeyboardRect プロパティおよびソフトキーボードイベントを使用してテキストフィールドを表示可能領域 まで移動します。

    • 表示オブジェクトが GPU で表示されない場合、まったく表示されません。例えば、フィルターが表示オブジェクトに適用されると、オブジェクトは表示されません。

    注意: AIR 2.6 以降の iOS 用 GPU 実装は、以前の AIR 2.0 バージョンで使用されていた実装とは大きく異なります。異なる最適化の考慮事項が適用されます。

サポートされるプロファイル

supportedProfiles エレメントを追加して、アプリケーションがサポートするデバイスプロファイルを指定することができます。モバイルデバイスには mobileDevice プロファイルを使用します。Adobe Debug Launcher(ADL)でアプリケーションを実行すると、リストの最初のプロファイルがアクティブプロファイルとして使用されます。また、ADL の実行時に -profile を使用して、サポートされたリスト内の特定のプロファイルを選択することもできます。すべてのプロファイルを使用してアプリケーションを実行する場合、supportedProfiles エレメントを省略できます。この場合、ADL ではデスクトッププロファイルがデフォルトのアクティブプロファイルとして使用されます。

アプリケーションがモバイルデバイスとデスクトップの両方のプロファイルをサポートすること、および通常はモバイルプロファイルでアプリケーションをテストすることを指定するには、次のエレメントを追加します。

<supportedProfiles>mobileDevice desktop</supportedProfiles>

必要なネイティブ拡張

mobileDevice プロファイルをサポートするアプリケーションでは、ネイティブ拡張を使用できます。

アプリケーション記述子で、AIR アプリケーションが使用するすべてのネイティブ拡張を宣言します。次の例に、2 つの必須のネイティブ拡張を指定するシンタックスを示します。

<extensions> 
                            <extensionID>com.example.extendedFeature</extensionID> 
                            <extensionID>com.example.anotherFeature</extensionID> 
                            </extensions>

extensionID エレメントは、拡張記述ファイルの id エレメントと同じ値です。拡張記述ファイルは、extension.xml という名前の XML ファイルです。これは、ネイティブ拡張開発者が提供する ANE ファイル内にパッケージ化されています。

仮想キーボードの動作

パンおよびサイズ変更の自動動作を無効にするには、softKeyboardBehavior エレメントを none に設定します。これらの動作はランタイムによって使用され、仮想キーボードが開いたあとに、フォーカスの当たっているテキスト入力フィールドが表示されるようにするものです。この自動動作を無効にした場合は、アプリケーション側で、キーボードが開いた後にテキスト入力領域や関連する他のコンテンツが表示されるようにする必要があります。SoftKeyboardEvent とともに、ステージの softKeyboardRect プロパティを使用すれば、キーボードが開いたタイミングを検出し、キーボードが隠している領域を判断することができます。

この自動動作を有効にするには、次のようにこのエレメントの値を pan に設定します。

<softKeyboardBehavior>pan</softKeyboardBehavior>
pan はデフォルト値であるので、softKeyboardBehavior エレメントを省略すると、この自動キーボード動作は有効になります。
注意: GPU レンダリングも使用する場合は、パン動作はサポートされません。