Adobe
製品
Acrobat
Creative Cloud
Creative Suite
Digital Marketing Suite
Digital Publishing Suite
Elements
Photoshop
Touch Apps
その他の製品一覧
ソリューション
デジタルマーケティング
デジタルメディア
教育
金融機関
Web Experience Management
その他のソリューション
ラーニング サポート ダウンロード 会社情報
ご購入
アドビストア 安心のサポート& サービス
アカデミックストア 学生、教職員、個人向け
アドビライセンスストア 中小企業向け
ボリュームライセンスについて 企業、教育機関、官公庁向け
販売パートナー
キャンペーン情報
検索
 
情報 サインイン
ようこそ、 さん カート 注文状況 マイアカウント
マイアカウント
注文状況
アカウント情報の変更
コミュニケーションの設定を変更
サインアウト
サインインの目的 お客様のアカウントや体験版ダウンロード、製品の拡張機能、コミュニティエリアへのアクセスなどを管理するため
Adobe
製品 セクション ご購入   検索  
ソリューション 会社情報
サポート ラーニング
サインイン サインアウト 注文状況 マイアカウント
先行予約の提供開始予定日Date. 商品が発送されるまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。 先行予約の提供開始予定日Date. ダウンロードの準備が整うまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。
個数:
ご購入には学生・教職員個人版の購入資格の確認が必要です。
小計
カートの中身を見る
Adobe Developer Connection / Adobe AIRデベロッパーセンター /

ネイティブ拡張(Native Extensions)入門 第3回 ネイティブ拡張の開発方法 後編

著者 有川 榮一氏

有川 榮一氏
  • Arikawa Eiichi

Content

  • ネイティブ拡張ActionScriptライブラリの作成
  • ネイティブ拡張関数の呼び出し
  • ネイティブ拡張記述ファイルの作成
  • ANEファイルへパッケージ
  • AIRアプリへの組み込み

作成日

14 December 2011

ページ ツール

Facebookでシェア
Twitterでツイート
LinkedInでシェア
ブックマーク
印刷

タグ

必要条件

ユーザーレベル

すべて

必要な製品

  • Adobe AIR SDK
  • Flex (体験版ダウンロード)
  • Flash Builder (体験版ダウンロード)

サンプルファイル

  • ANEsamples.zip

ネイティブ拡張を開発するには、下記のような手順で行います。

  1. ネイティブ拡張ライブラリの作成
  2. ネイティブ拡張ActionScriptライブラリの作成
  3. ネイティブ拡張記述ファイルの作成
  4. ANEファイルへパッケージング
ANEファイルの作成に必要な要素と手順
図1 ANEファイルの作成に必要な要素と手順

前編では、「1. ネイティブ拡張ライブラリの作成」までを解説しました。後編では2~4、そして作成したANEファイルのAIRアプリケーションへの組み込む方法についても解説します。

必要なもの

Eclipse

XCode

ネイティブ拡張ActionScriptライブラリの作成

ネイティブ拡張ActionScriptライブラリとは、ネイティブ拡張ライブラリを呼び出すためのActionScriptライブラリのことです。ANEファイルは、このネイティブ拡張ActionScirptライブラリと、前編で解説したネイティブ拡張ライブラリを組み合わせて作成します。また、ネイティブ拡張ActionScriptライブラリの作成には、Flash Builderを使用することをおすすめします。

ネイティブJava API/C APIで作成したネイティブ拡張ライブラリと連携するためには、ActionScirptのExtensionContextクラスを使用します。その際、以下の処理を行います。

ネイティブ拡張コンテキストの取得

ExtensionContext.createExtensionContextを呼び出してネイティブ拡張コンテキストを取得します。拡張IDは、ネイティブ拡張記述ファイルで指定する値と一致させます。

var extContext:ExtensionContext = ExtensionContext.createExtensionContext(拡張ID, コンテキスト作成引数);

ネイティブ拡張関数の呼び出し

ネイティブ拡張コンテキストに登録されているネイティブ拡張関数を呼び出すには、ExtensionContextインスタンスのcall関数を使って呼び出します。

extContext.call(ネイティブ拡張関数名, ネイティブ拡張関数引数);

サンプルでは、ネイティブ拡張ライブラリに登録されているGetHelloWorld関数を呼び出すクラスを作成します。

ソースコード:Ane/HelloWorldExtension/src/example/ane/HelloWorldExtension.as

package example.ane { import flash.events.EventDispatcher; import flash.external.ExtensionContext; import flash.system.Capabilities; public class HelloWorldExtension extends EventDispatcher { private var context:ExtensionContext; public function HelloWorldExtension() { //ネイティブ拡張コンテキストを生成 context=ExtensionContext.createExtensionContext("example.ane", "type"); } public function getHelloWorld():String { return context.call("GetHelloWorld") as String; } public function dispose():void { return context.dispose(); } } }

コンパイル時は、図2のように[プロパティ]ウインドウの[追加コンパイラー引数]に「-swf-version 13」を指定してSWCを作成します。

コンパイル引数の設定
図2 コンパイル引数の設定
ネイティブ拡張ActionScriptライブラリ作成用のファイル構成
図3 ネイティブ拡張ActionScriptライブラリ作成用のファイル構成

ネイティブ拡張記述ファイルの作成

ネイティブ拡張記述ファイルは、ネイティブ拡張ライブラリについて定義したXMLファイルです。このファイルは、ANEファイルの作成時と、ANEファイルをAIRアプリに組み込む際に必要となります。

ネイティブ拡張記述ファイルのルートextensionタグの名前空間、AIRのバージョン、SWFのバージョンは下表のようになります。

名前空間とAIRバージョンとSWFバージョンの関係
名前空間 AIRバージョン ANEファイルに含まれるSWFファイルのバージョン
ns.adobe.com/air/extension/2.5 AIR 2.5(AIR for TV only) 10
ns.adobe.com/air/extension/2.5 AIR 3+ 13
ns.adobe.com/air/extension/3.1 AIR 3.1+ 14

次に、記述ファイルで使用する主なタグについて説明します。

<id>:

このIDは、ActionScriptからネイティブ拡張を指定する際に使います。

<nativeLibrary>:

ネイティブ拡張ライブラリのファイルを指定します。

<platform>:

プラットフォームを指定します。name要素には、下記のようなプラットフォームを示す値を入れます。

platformタグのname要素の値
name要素の値 プラットフォーム デバイス
Windows-x86 Windows Windowsデスクトップ
MacOS-x86 Mac OS Mac OSデスクトップ
Android-ARM Android Androidデバイス
iPhone-ARM iOS iPad、iPhone、iPod touch
QNX-ARM BlackBerry Tablet OS BlackBerry PlayBook
default プラットフォームが指定されていない場合 -

なお、AIR Debug Launcher(ADL)を使用したシミュレーターでアプリを実行した場合のプラットフォームは、defaultが選択されます。

<initializer>:

ネイティブJava APIの場合は、FREExtensionを実装したクラスの完全限定名を指定します。ネイティブC APIの場合は、初期関数名を指定します。

<finalizer>:

Java APIの場合は、FREExtensionを実装したクラスの完全限定名を指定します。C APIの場合は、破棄関数名を指定します。

サンプルでは、下記のようなネイティブ拡張記述ファイルをextension.xmlとして作成しました。platformをAndroid-ARMとする場合、ここではネイティブJava APIで作ったネイティブ拡張ライブラリにある<initializer>/<finalizer>にexample.ane.android.HelloWorldExtensionクラスを指定していたのでそれを用います。

platformをiPhone-ARMとする場合は、ネイティブC APIで作ったネイティブ拡張ライブラリにあるinitializerにExtInitializer関数を、finalizerにExtFinalizer関数を指定していたのでそれを用います。

platformをdefaultとする場合は、ネイティブ拡張ライブラリの指定は必要ありません。

※ネイティブ拡張ライブラリについては、前編をご覧ください。

ソースコード:Ane/HelloWorldExtension/extension.xml

<extension xmlns="http://ns.adobe.com/air/extension/3.1"> <id>example.ane</id> <versionNumber>1.0.0</versionNumber> <name> <text xml:lang="en_US">Hello World</text> <text xml:lang="ja_JP">こんにちは 世界</text> </name> <platforms> <platform name="Android-ARM"> <applicationDeployment> <nativeLibrary>HelloWorldANE.jar</nativeLibrary> <initializer>example.ane.android.HelloWorldExtension</initializer> <finalizer>example.ane.android.HelloWorldExtension</finalizer> </applicationDeployment> </platform> <platform name="iPhone-ARM"> <applicationDeployment> <nativeLibrary>libHelloWorldANE.a</nativeLibrary> <initializer>ExtInitializer</initializer> <finalizer>ExtFinalizer</finalizer> </applicationDeployment> </platform> <platform name="default"> <applicationDeployment/> </platform> </platforms> </extension>

これでANEファイルに必要な3つのファイルが揃いました。

  • ネイティブ拡張ライブラリ
  • ネイティブ拡張ActionScriptライブラリ
  • ネイティブ拡張記述ファイル

ANEファイルへパッケージ

ANEファイルは、AIR Developer Tools(ADT)を使用して、ネイティブ拡張ライブラリとネイティブ拡張ActionScriptライブラリを組み合わせます。ADTでパッケージする前に、必要な作業が2点あります。

library.swfの抽出

ネイティブ拡張ActionScriptライブラリのSWCファイルは実はZIP形式なので、ZIPツールなどを使って展開することができます。そして展開したフォルダーの中にあるlibrary.swfをプラットフォームごとにコピーします。

証明書の作成

これは、Flash BuilderでAIRアプリ開発時に作成する証明書を使うことができます。ネイティブ拡張は、プラットフォームに深くアクセスすることもできます。そのようなネイティブ拡張を配布する際は、AIRのAdobe AIRコード署名証明書を利用すべきです。

ADTでANEファイルにパッケージするには、下記のようなコマンドで行います(※実際には1行)。

adt -package -storetype pkcs12 -keystore 証明書ファイル -target ane ANEファイル名 ネイティブ拡張記述ファイル -swc ネイティブ拡張ActionScriptライブラリ -platform プラットフォーム名 -C プラットフォームディレクトリ .

サンプルでは下記のようなADTコマンドで、HelloWorldExtensionフォルダー直下でANEファイルにパッケージングします。(※実際には1行)。

adt -package -storetype pkcs12 -keystore test.p12 -target ane HelloWorldExtension.ane extension.xml -swc bin/HelloWorldExtension.swc -platform Android-ARM -C platform/android . -platform iPhone-ARM -C platform/iphone . -platform default -C platform/default
複数プラットフォーム対応したネイティブ拡張ActionScriptライブラリのファイル構成、そして作成したANEファイル
図4 複数プラットフォーム対応したネイティブ拡張ActionScriptライブラリのファイル構成、そして作成したANEファイル

AIRアプリへの組み込み

ANEファイルをAIRアプリに組み込む際にもADTを使います。AIR 3のADTは、プラットフォーム向けのアプリケーションファイルにパッケージングする際に、ネイティブ拡張を指定することができます。そのためには、extdirを使ってネイティブ拡張のANEファイルがあるフォルダーを指定します。 ADTは、パッケージングする際にアプリケーション記述ファイルで指定したネイティブ拡張IDと一致するネイティブ拡張を探します。そしてネイティブ拡張がプラットフォームに対応していた場合、ネイティブ拡張ライブラリを抽出してアプリケーションに同梱します。

ここまでの作業で、「HelloWorld」を出力するANEファイルを作成しました。そのANEファイルをAIRアプリに組み込んでみましょう。ボタンを押したらネイティブ拡張のGetHelloWorldネイティブ関数を呼び出して結果を表示するという、Flexモバイルアプリケーションを作成します。

<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" applicationDPI="160" width="100%" height="100%" > <fx:Script> <![CDATA[ import example.ane.HelloWorldExtension; private var extension:HelloWorldExtension = new HelloWorldExtension(); protected function button1_clickHandler(event:MouseEvent):void { debugDisplay.appendText(extension.getHelloWorld()); } ]]> </fx:Script> <s:layout> <s:VerticalLayout horizontalAlign="justify"/> </s:layout> <s:Button label="call getHelloWorld" click="button1_clickHandler(event)"/> <s:TextArea id="debugDisplay" width="100%" height="100%"/> </s:Application>

アプリケーション記述ファイルの追加

アプリケーションでネイティブ拡張を使うことを示すために、アプリケーション記述ファイルにネイティブ拡張のIDを指定します。

<extensions> <extensionID>example.ane</extensionID> </extensions>

各プラットフォーム向けアプリケーションファイルの作成

ネイティブ拡張を使うのでextdirを使ってANEファイルがあるフォルダーを指定します。そして、下記のようなADTコマンドでプラットフォームごとにアプリケーションファイルを作成します。

iOS向けアプリケーション(※実際には1行)

adt -package -storetype pkcs12 -keystore test.p12 -target ipa-debug HelloWorldExtensionAIR.ipa bin-debug/HelloWorldMobile-app.xml -C bin-debug HelloWorldMobile.swf -extdir extdir

Android向けアプリケーション(※実際には1行)

adt -package -storetype pkcs12 -keystore test.p12 -target apk HelloWorldExtensionAIR.apk bin-debug/HelloWorldMobile-app.xml -C bin-debug HelloWorldMobile.swf -extdir extdir

以上で完成です。

おわりに

本記事では、AIR 3のネイティブ拡張について、ネイティブ拡張ライブラリの作成からANEファイル作成まで順を追って解説しました。ネイティブ拡張について理解を深めることができたと思います。次回は、ネイティブAPIを用いてプラットフォームの機能を使ったネイティブ拡張の作成について説明します。

また、Flash Builder 4.6はネイティブ拡張に対応しており、コマンドラインを使うことなく容易にネイティブ拡張を組み込むことができるほか、ネイティブ拡張を使用したアプリケーションのデバック実行も可能になります。詳しくは、「Flash Builder 4.6 でネイティブ拡張(Native Extensions)を使ってみよう」をご覧ください。

関連情報

ネイティブ拡張(Native Extensions)入門

  • 第1回 ネイティブ拡張を理解する
  • 第2回 ネイティブ拡張の開発方法 前編

Flash Builder 4.6 でネイティブ拡張(Native Extensions)を使ってみよう

Tutorials and samples

Tutorials

  • Using the GameCenter Adobe AIR native extension for iOS
  • Using the iAd Adobe AIR native extension for iOS
  • Easy Library
  • Introducing Adobe AIR Launchpad

Samples

  • Licensing Adobe AIR applications on Android
  • Using web fonts with Adobe AIR 2.5
  • Using Badger for Adobe AIR applications

AIR blogs

More
05/15/2012 What’s New in Flash Player 11.2 and Adobe AIR 3.2 Slides and...
05/14/2012 Adobe Flash Platform Runtime and SDK Archives
05/14/2012 Monster’s Socks on the iPad with Adobe AIR
05/10/2012 What’s New in Flash Player 11.2 and Adobe AIR 3.2

AIR Cookbooks

More
02/09/2012 Using Camera with a MediaContainer instead of VideoDisplay
01/20/2012 Skinnable Transform Tool
01/18/2012 Recording webcam video & audio in a flv file on local drive
12/12/2011 Date calculations using 'out-of-the-box' functions

製品

  • Acrobat
  • Creative Cloud
  • Creative Suite
  • Digital Marketing Suite
  • Digital Publishing Suite
  • Elements
  • モバイルアプリ
  • Photoshop
  • Touch Apps

ソリューション

  • デジタルマーケティング
  • コンテンツオーサリング
  • Web Experience Management

業種別ソリューション

  • 教育
  • 金融機関

サポート

  • ヘルプ&サポート
  • 注文と返品
  • ダウンロードに関するヘルプ
  • ユーザー登録に関するヘルプ

ラーニング

  • ADC: Adobe Developer Center
  • Adobe TV
  • Design Magazine
  • Photoshop Magazine
  • Focus In

ご購入方法

  • アドビストア
  • アカデミックストア
  • アドビライセンスストア
  • ボリュームライセンスについて
  • 販売パートナー
  • キャンペーン情報

ダウンロード

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

会社情報

  • プレスルーム
  • パートナープログラム
  • 企業の社会的責任(英語)
  • 採用情報
  • 投資家の皆様へ(英語)
  • イベント&セミナー
  • Legal(英語)
  • セキュリティ
  • お問い合わせ
国・地域および言語の選択 日本(変更)
国・地域および言語の選択 閉じる

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated. All rights reserved.

利用条件 | プライバシーポリシーとCookie (更新)

Reviewed by TRUSTe: site privacy statement