連載
» 2009年08月31日 00時00分 公開

Androidがもたらす組み込み開発の新たな可能性(2):ネイティブコードとの連携によるAndroidの機能拡張 (2/3)

[藤田 幸治 株式会社富士通ソフトウェアテクノロジーズ,@IT MONOist]

Android NDKとJNIによるAndroidの拡張

 では、Android NDKとJNIによるネイティブコードとの連携の具体的な手順について見ていこう。

開発環境について

 Android NDKを用いた開発を行う場合、以下の環境が必要となる。

Android 1.5 SDK
※なお、Android SDKを利用するのに必要な環境は以下のとおりだ。
→Eclipse IDE for Java
→Java Runtime Environment(JRE)

※注2:
本稿では「Eclipse IDE for Java EE Developers」および「JRE Version 6 Update 15」を使用。


対象OS
Windows XP(32-bit)、Windows Vista(32bit/64bit)
Mac OS 10.4.9以降
Linux(32bit/64bit、Linux Ubuntu Dapper Drakeでテスト済み)

※注3:
本稿では、「Windows XP(32-bit)」を使用。


開発ツール
GNU Make 3.81以降
※Windows環境の場合は上記に加え、以下のツールも必要となる。
→Cygwin最新版
→Cygwinに含まれる「make」と「gcc」パッケージ

※注4:
本稿では、「Cygwin 1.5.25-15」を使用。



構築からサンプルアプリケーションの実行まで

 ここからは、Android NDKに付属しているサンプルアプリケーション「HelloJni」を実行するまでの具体的な手順を紹介する(注5)。

※注5:
本稿では、Cygwinのインストール先をDドライブ直下として解説を行う。また、JRE、Eclipse、Android SDKの導入については割愛する。


1.Cygwinに「gcc」「make」パッケージをインストール

 Cygwinのインストール時に表示される「Cygwin Setup−Select Packages」ダイアログで、Devel配下にある「gcc」「make」パッケージを指定し、インストールする。パッケージ一覧からgccとmakeを探し、左側の“Skip”と書かれている部分をクリックするとバージョン番号が表示される(画像1)(画像2)(注6)。この状態でCygwinのインストールを行えば、両パッケージが追加される。これでAndroidのC-NativeコードをCygwinでコンパイルできるようになる。

「Cygwin Setup−Select Packages」(その1) 画像1 「Cygwin Setup−Select Packages」(その1)

「Cygwin Setup−Select Packages」(その2) 画像2 「Cygwin Setup−Select Packages」(その2)

※注6:
gccパッケージをクリックすると、そのほか必要となるパッケージも同時に選択されるが、そのまま変更せずにインストールを進める。


2.Android NDKインストール

 続いて、Android DevelopersサイトからAndroid NDKのZIPファイル「android-ndk-1.5_r1-windows.zip」をダウンロードする。そして、ZIPファイルを展開し、「android-ndk-1.5_r1」フォルダをDドライブ直下に移動する。

 以下に、Android NDKの主なファイル構成を示す(一部省略)。

android-ndk-1.5_r1
├ app
│ └<App Name>
│    ├ Application.mk         …… Javaアプリケーションコンパイル情報
│    └ project
│       ├ AndroidManifest.xml …… Javaアプリケーション構成情報
│       ├ bin                 …… Javaモジュール/コンパイル後生成される
│       ├ libs                …… Nativeライブラリモジュールが格納される
│       ├ res                 …… Javaアプリケーション画像リソース
│       └ src                 …… Javaアプリケーションソースコード
├build                         …… コンパイル環境設定
├docs                          …… NDKドキュメント
├out
└sources                       …… Nativeソースコード
   └samples
     └<App Name>
         ├ Android.mk          …… Nativeライブラリコンパイル情報
         └ Nativeソースコード …… Nativeアプリケーション 

3.C-Nativeライブラリのコンパイル

 Cygwinを起動し、C-Nativeライブラリをコンパイルするための環境設定シェルスクリプト「host-setup.sh」を以下のコマンドで実行する。

$ cd /cygdrive/d/android-ndk-1.5_r1
$ build/host-setup.sh 

Cygwinでシェルスクリプト「host-setup.sh」を実行 画像3 Cygwinでシェルスクリプト「host-setup.sh」を実行

 続いて、サンプルとして提供されているC-Nativeライブラリ「hello-jni」を以下のコマンドでコンパイルする。

$ make APP=hello-jni 

Cygwinで「hello-jni」をコンパイル 画像4 Cygwinで「hello-jni」をコンパイル

 コンパイルが正しく行われると、ライブラリファイル「libhello-jni.so」が以下の2つのフォルダに格納される。

D:\android-ndk-1.5_r1\app\hello-jni\project\libs\armeabi\libhello-jni.so
D:\android-ndk-1.5_r1\out\apps\hello-jni\android-1.5-arm\libhello-jni.so 

4.Eclipse環境設定

 Eclipseで「hello-jni」プロジェクトを取り込む前に、Android 1.5 SDK環境が正しく設定できているかどうかを以下の手順で確認する。

(a)Android 1.5 SDKのファイルパスを確認

 Eclipseを起動し、メニューから[Window]−[Preferences]をクリックして、「Preferences」ダイアログを表示する。左側のツリーから「Android」を選択し、「SDK Location:」にAndroid 1.5 SDKのトップディレクトリが設定されていることを確認する(画像5)。

Eclipseの「Preferences」ダイアログ 画像5 Eclipseの「Preferences」ダイアログ

(b)Android Virtual Devicesの確認

 次に、エミュレータ上でAndroid 1.5を動作させるための“仮想デバイス”が生成されているかどうかを確認する。メニューから[Window]−[Android AVD Manager]をクリックして、「Android Virtual Devices Manager」ダイアログを表示する。「List of existing Android Virtual Devices:」にPlatform 1.5のAndroid仮想デバイスが存在しない場合、「Create AVD」のTargetに「Android 1.5 - 1.5」を選択して、Android仮想デバイスを生成する(画像6)。

Eclipseの「Android Virtual Devices Manager」ダイアログ 画像6 Eclipseの「Android Virtual Devices Manager」ダイアログ

Copyright © ITmedia, Inc. All Rights Reserved.