AIR for TV ネイティブ拡張の構築

AIR for TV ネイティブ拡張を構築する際には、次の 2 つのバージョンの拡張を構築します。

  • デバイスバンドル拡張

  • スタブ拡張またはシミュレーター拡張

デバイスバンドル拡張には次のものが含まれます。

  • ネイティブ実装(通常 C または C++ で記述)

  • ネイティブ実装の関数を呼び出す、実際の ActionScript 実装

スタブ拡張またはシミュレーター拡張は、ActionScript 専用の実装です。

実際の ActionScript スタブ実装およびシミュレーター実装について詳しくは、 デバイスバンドル拡張とスタブ拡張 を参照してください。

拡張の署名済み証明書の作成

ネイティブ拡張に電子署名することができます。拡張への署名はオプションです。

AIR for TV の make ユーティリティは、デフォルトで偽の証明書を使用します。この偽の証明書は、テストのみで有効です。証明機関の証明書の作成について詳しくは、 ネイティブ拡張の署名済み証明書の作成 を参照してください。

ネイティブ実装の記述

AIR for TV では、拡張のネイティブ実装は AIR for TV モジュールです。モジュール構築の詳細を含む、AIR for TV モジュールの一般的な情報については、『 Optimizing and Integrating Adobe AIR for TV 』(PDF)を参照してください。

AIR for TV 配布ファイルでは、拡張のネイティブ実装の記述と構築のための拡張開発キット(EDK)が提供されます。

EDK には次のものが含まれます。

  • C 拡張 API ヘッダーファイル

    <AIR for TV installation directory>/products/stagecraft/include/ae/edk/FlashRuntimeExtensions.h

    このヘッダーファイルは、ネイティブ実装が使用する C の型および関数を宣言するものです。

  • 拡張モジュール実装。次のソースファイルにあります。

    <AIR for TV installation directory>/products/stagecraft/source/ae/edk/ExtensionBridge.cpp

    この拡張モジュール実装は変更しないでください。ネイティブ実装を構築する際に、ビルド内にこのソースファイルを含める必要があります。

  • デバイスバンドル拡張を構築するための makefile サポート。詳しくは、 .mk ファイルの作成 および make ユーティリティの実行 を参照してください。

注意: AIR for TV EDK では、 FREInitializer() メソッドの名前が Initializer() であり、 FREFinalizer() メソッドの名前が Finalizer() である必要があります。これらのメソッドについて詳しくは、 拡張の初期化 および 拡張のファイナライズ処理 を参照してください。

ディレクトリ構造での ActionScript およびネイティブコードの配置

デバイスバンドル拡張は、ハードウェアプラットフォームごとに異なります。デバイスバンドル拡張を開発する際には、プラットフォームに合わせてサブディレクトリ内にファイルを配置します。このサブディレクトリは、次のディレクトリ内にあります。

<AIR for TV installation directory>/products/stagecraft/thirdparty-private/<yourCompany>/stagecraft-platforms/<yourPlatform>/edk

例えば、CompanyA は PlatformB をターゲットにした開発で次のサブディレクトリを使用します。

<AIR for TV installation directory>/products/stagecraft/thirdparty-private/CompanyA/stagecraft-platforms/PlatformB/edk

<yourPlatform> /edk ディレクトリまたはそのサブディレクトリ内に、C 実装のヘッダーファイルとソースファイルを配置します。例えば、次のディレクトリ内に、拡張の .cpp ファイルと .h ファイルを配置します。

<AIR for TV installation directory>/products/stagecraft/thirdparty-private/CompanyA/stagecraft-platforms/PlatformB/edk/myExtension/native

同様に、 <yourPlatform> /edk ディレクトリまたはそのサブディレクトリ内に、実際の ActionScript 実装の .as ファイルを配置します。次に、例を示します。

<AIR for TV installation directory>/products/stagecraft/thirdparty-private/CompanyA/stagecraft-platforms/PlatformB/edk/myExtension/as/real

また、 <yourPlatform> /edk ディレクトリまたはそのサブディレクトリ内に、ActionScript スタブ実装またはシミュレーター実装の .as ファイルを配置します。次に、例を示します。

<AIR for TV installation directory>/products/stagecraft/thirdparty-private/CompanyA/stagecraft-platforms/PlatformB/edk/myExtension/as/stub 
<AIR for TV installation directory>/products/stagecraft/thirdparty-private/CompanyA/stagecraft-platforms/PlatformB/edk/myExtension/as/simulator 
注意: AIR for TV に付属するサンプル拡張は、 <AIR for TV installation directory>/products/stagecraft/source/edk ディレクトリ内にあります。このディレクトリに、拡張ファイルを配置しないでください。

.mk ファイルの作成

他の AIR for TV モジュールと同様に、拡張モジュールを構築するには、最初に .mk ファイルを作成します。.mk ファイルの主な目的は、構築するソースファイルを指定することです。

.mk ファイルを作成するには:

  1. 次の場所から PlatformEDKExtension_HelloWorld.mk ファイルまたは PlatformEDKExtension_Process.mk ファイルをコピーします。

    <AIR for TV installation directory>/products/stagecraft/source/ae/edk/helloworld/

    または

    <AIR for TV installation directory>/products/stagecraft/source/ae/edk/process/

    コピー先は以下です。

    <AIR for TV installation directory>/products/stagecraft/thirdparty-private/<yourCompany>/stagecraft-platforms/<yourPlatform>

    このディレクトリは、プラットフォームの Makefile.config ファイルを含むディレクトリと同じです。『 Optimizing and Integrating Adobe AIR for TV 』(PDF)の「 Coding, building, and testing 」の章の「 Creating your platform Makefile.config 」を参照してください。

  2. .mk ファイルの名前を PlatformEDKExtension_ <your extension name> .mk に変更します。AIR for TV の make ユーティリティは、この命名規則で自動的に .mk ファイルを検索します。

    mk ファイルの名前は必ず PlatformEDKExtension_ から開始してください。

  3. 「REQUIRED」のマークがついた .mk ファイルのセクションを編集します。

次の必須の変更を行います。

  • SC_EDK_EXTENSION_NAME を拡張名に設定します。この変数を、PlatformEDKExtension_ <your extension name> .mk の <your extension name> の値に設定します。

  • SC_EDK_EXTENSION_PACKAGE を拡張パッケージ名に設定します。この値を、拡張の ActionScript 側で使用するパッケージ名に設定します。

    make ユーティリティは、この値を、拡張の拡張記述ファイル内にある <id> エレメントの値として使用します。また、作成される ANE ファイルにも、この値の名前と .ane ファイル名拡張子が付けられます。

    拡張記述ファイルについて詳しくは、 ネイティブ拡張記述ファイル を参照してください。

  • SC_EDK_EXTENSION_VERSION を拡張のバージョン番号に設定します。

    make ユーティリティはこの値を、拡張の拡張記述ファイル内の <versionNumber> エレメントの値として使用します。

  • SC_MODULE_SOURCE_DIR SC_MODULE_SOURCE_FILES および SC_ADDITIONAL_MODULE_OBJ_SUBDIRS を、AIR for TV が提供するネイティブ実装ファイルを指定するように設定します。

    注意: このリストから ExtensionBridge.cpp を削除しないでください。HelloWorld または Process 拡張実装ファイルを削除します。通常は、このリストには拡張のソースファイルを追加しません。

    次に、例を示します。

    SC_MODULE_SOURCE_DIR := $(SC_SOURCE_DIR_EDK) 
    SC_MODULE_SOURCE_FILES := ExtensionBridge.cpp
  • SC_PLATFORM_SOURCE_DIR および SC_PLATFORM_SOURCE_FILES を、拡張のネイティブ実装ファイルを指定するように設定します。次に、例を示します。

    SC_PLATFORM_SOURCE_DIR                    := $(SC_PLATFORM_MAKEFILE_DIR)/edk/myExtension/native 
    SC_PLATFORM_SOURCE_FILES                     := \ 
                    MyExtension.cpp \ 
                    helper\MyHelperClass1.cpp \ 
                    helper\MyHelperClass2.cpp
  • SC_EDK_AS_SOURCE_DIR を、(スタブ実装ではなく)実際の ActionScript ファイルを含むディレクトリに設定します。次に、例を示します。

    SC_EDK_AS_SOURCE_DIR := $(SC_PLATFORM_MAKEFILE_DIR)/edk/myExtension/as/real 
    注意: このディレクトリは、ActionScript パッケージの基本ディレクトリです。例えば、 tv.adobe.extension.example という名前の ActionScript パッケージについて考えます。この場合、 tv adobe extension および example の各ディレクトリは、 SC_EDK_AS_SOURCE_DIR の次に続くサブディレクトリです。
  • SC_EDK_AS_CLASSES を、実際の ActionScript 実装が定義するすべての ActionScript クラスのリストに設定します。次に、例を示します。

    SC_EDK_AS_CLASSES := MyExtension \ 
                        MyHelperClass1 \ 
                        MyHelperClass2
  • SC_EDK_AS_SOURCE_DIR_AUTHORING を、拡張のスタブ実装またはシミュレーター実装の ActionScript ファイルを含むディレクトリに設定します。次に、例を示します。

    SC_EDK_AS_SOURCE_DIR_AUTHORING := $(SC_PLATFORM_MAKEFILE_DIR)/edk/myExtension/as/stub 
    注意: このディレクトリは、ActionScript パッケージの基本ディレクトリです。例えば、 tv.adobe.extension.example という名前の ActionScript パッケージについて考えます。この場合、 tv adobe extension および example の各ディレクトリは、 SC_EDK_AS_SOURCE_DIR_AUTHORING の次に続くサブディレクトリです。
  • ActionScript スタブ実装またはシミュレーター実装が定義するすべての ActionScript クラスのリストに、 SC_EDK_AS_CLASSES_AUTHORING を設定します。次に、例を示します。

    SC_EDK_AS_CLASSES_AUTHORING := MyExtension \ 
                        MyHelperClass1 \ 
                        MyHelperClass2

サードパーティ製ライブラリのインストール

AIR for TV の構築にはいくつかのサードパーティ製ライブラリが必要です。これらのライブラリについて詳しくは、『 Getting Started with Adobe AIR for TV 』(PDF)の「 Install third-party software 」を参照してください。

拡張モジュールのみを構築し、AIR for TV 全体を構築するわけではない場合、必要なライブラリは次のとおりです。

  • AIR 3 SDK

    http://www.adobe.com/jp/special/products/air/sdk/ から、Mac OS X ダウンロードを選択します。

    この .tbz2 ファイルの内容を展開するディレクトリを作成します。次に、例を示します。

    /usr/AIRSDK

    作成したディレクトリ内に、.tbz2 ファイルの内容を展開します。

    tar jxf AdobeAIRSDK.tbz2

    PATH 環境変数を、AIR SDK bin ディレクトリを含めるように設定します。この例では、bin ディレクトリは /usr/AIRSDK/bin です。

  • オープンソース Flex® SDK

    http://opensource.adobe.com/wiki/display/flexsdk/Downloads からオープンソース Flex SDK の最新リリースビルドの ZIP ファイルをダウンロードします。

    ZIP ファイルのコンテンツを格納するディレクトリを作成します。次に、例を示します。

    /usr/flexSDK

    作成したディレクトリ内に、ZIP ファイルの内容を展開します。

    unzip flex_sdk_4.5.1.21328_mpl.zip

    PATH 環境変数を、Flex SDK bin ディレクトリを含めるように設定します。この例では、bin ディレクトリは /usr/flexSDK/bin です。

  • Java™ ランタイム。Flex SDK では最新の Java ランタイムが必要です。開発システムにまだ Java ランタイムがない場合は、 http://www.java.com/en/download/manual.jsp のダウンロードおよびインストール手順を参照してください。

    PATH 環境変数を、Java bin ディレクトリを含めるように設定します。

make ユーティリティの実行

AIR for TV の make ユーティリティの使用について詳しくは、次のドキュメントを参照してください。

特に、make ユーティリティは、拡張の構築時に Makefile.config で次のビルド変数を使用します。

  • SC_ZIP

  • SC_UNZIP

  • SC_PLATFORM_NAME

  • SC_PLATFORM_ARCH

プラットフォームの Makefile.config ファイルおよび拡張の .mk ファイルを作成した後で、make ユーティリティを使用して次のことを実行できます。

  • AIR for TV 全体の構築

  • 拡張モジュールのみの構築

AIR for TV 全体を構築するには、以下を実行します。
  1. 環境変数 SC_BUILD_MODE および SC_PLATFORM が設定されていることを確認します。

  2. 作成した証明書を使用して拡張に署名する場合は、環境変数 SC_EDK_ANE_CERT_FILE および SC_EDK_ANE_CERT_PASSWD を設定します。

    SC_EDK_ANE_CERT_FILE を、証明書の相対パスまたは絶対パスに設定します。この相対パスは、ビルドディレクトリの < AIR for TV installation directory >/stagecraft/build/linux からの相対パスです。

    SC_EDK_ANE_CERT_PASSWD を、証明書のパスワードに設定します。

    これらの環境変数を設定しなければ、make ユーティリティはデフォルトの偽の証明書を使用し、警告メッセージを表示します。この偽の証明書は、テストのみに適しています。

  3. 作業ディレクトリを次の場所に変更します。

    <AIR for TV installation directory>/products/stagecraft/build/linux
  4. 次のコマンドを入力します。

    make

拡張モジュールのみを構築するには、以下を実行します。

  1. 環境変数 SC_BUILD_MODE および SC_PLATFORM が設定されていることを確認します。

  2. 作成した証明書を使用して拡張に署名する場合は、前述のとおり、環境変数 SC_EDK_ANE_CERT_FILE および SC_EDK_ANE_CERT_PASSWD を設定します。

  3. ディレクトリを stagecraft/build/linux ディレクトリに変更します。

  4. 次のコマンドを入力します。

    make PlatformEDKExtension_<your extension name>

次のコマンドを使用して、拡張に対して前に構築されたすべてのオブジェクトを削除できます。

make clean-PlatformEDKExtension_<your extension name>

次のコマンドを使用して、拡張に対して前に構築されたすべてのオブジェクトを削除し、再構築できます。

make rebuild-PlatformEDKExtension_<your extension name>
重要: ビルドマシンがファイアウォールの背後にある場合は、make ユーティリティが失敗することがあります。ファイアウォールでは、ADT が使用するタイムスタンプサーバー(ネイティブ拡張を ANE ファイルにパッケージ化する際のタイムスタンプサーバー)へのアクセスが禁止されていることがあります。この失敗が発生した場合、次のエラーが出力されます。
Could not generate timestamp: Connection timed out

この失敗を回避するには、make ユーティリティが使用する ADT コマンドを変更します。次のディレクトリ内の extension.mk ファイルを編集します。

<AIR for TV installation directory>/stagecraft/source/ae/edk/

次の行を検索します。

$(SC_EXEC_CMD) $(SC_ADT) -package \

次のように、コマンドに -tsa none パラメーターを追加します。

$(SC_EXEC_CMD) $(SC_ADT) -package -tsa none\

make ユーティリティの拡張の出力

make ユーティリティは拡張の 2 つのファイルを作成します。これらのファイルは、 SC_BUILD_MODE にデバッグとリリースのどちらを指定したかに応じて、次のディレクトリのいずれかに配置されます。

<AIR for TV installation directory>/build/stagecraft/linux/<yourPlatform>/debug/bin 
<AIR for TV installation directory>/build/stagecraft/linux/<yourPlatform>/release/bin

make ユーティリティが拡張向けに作成するファイルは次のとおりです。

  • デバイスにデプロイするための、デバイスバンドル拡張を含む ZIP ファイル。

  • スタブ拡張またはシミュレーター拡張を含む ANE ファイル。AIR アプリケーション開発者はこの ANE ファイルを使用して、アプリケーションを構築します。また、ADL を使用してデスクトップコンピューター上でアプリケーションをテストするためにも、このファイルを使用します。さらに、アプリケーションと共に、この ANE ファイルを AIRN パッケージにパッケージ化します。

スタブ拡張とシミュレーター拡張の両方の構築

実際の拡張に加えて、スタブ拡張とシミュレーター拡張の両方を構築する場合があります。通常、AIR アプリケーション開発者に次のように指示します。

  • シミュレーター拡張を使用してデスクトップ上でテストすること

  • アプリケーションと共に、スタブ拡張を AIRN パッケージにパッケージ化すること

スタブ拡張とシミュレーター拡張の両方を構築するには、以下を実行します。

  1. スタブ拡張とその .mk ファイルを作成します。スタブ拡張と実際の拡張を構築できることを確認します。

  2. スタブ実装ディレクトリと同じ階層に、シミュレーター実装のディレクトリを作成します。次に、例を示します。

    <AIR for TV installation directory>/products/stagecraft/thirdparty-private/CompanyA/stagecraft-platforms/PlatformB/edk/myExtension/as/stub 
    <AIR for TV installation directory>/products/stagecraft/thirdparty-private/CompanyA/stagecraft-platforms/PlatformB/edk/myExtension/as/simulator
  3. 拡張の .mk ファイルをコピーします。

  4. このコピーで、 SC_EDK_AS_SOURCE_DIR_AUTHORING SC_EDK_AS_CLASSES_AUTHORING の値を編集します。これらの値を、シミュレーター実装のディレクトリおよびクラスを反映するように設定します。

  5. 拡張の元の .mk ファイルの名前を変更し、安全に保護します。次に、コピーの名前を、拡張用の .mk ファイル名(PlatformEDKExtension_<your extension name>.mk)に変更します。

  6. プラットフォームの bin ディレクトリにあるスタブ ANE ファイルを、安全な場所に移動します。この手順を省くと、次の手順でファイルが上書きされます。

  7. make ユーティリティを実行し、実際の拡張およびシミュレーター拡張を構築します。