Androidがもたらす組み込み開発の新たな可能性

Androidがもたらす組み込み開発の新たな可能性(2)

ネイティブコードとの連携による
Androidの機能拡張

藤田 幸治 株式会社富士通ソフトウェアテクノロジーズ 2009/8/31

- PR -

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

5.Android NDKサンプルアプリケーションのプロジェクトを生成
 ここまでの準備ができたら「hello-jni」プロジェクトを取り込む。手順は以下のとおりだ。

 Eclipseのメニューから[File]−[New]−[Android Project]をクリックして、「New Android Project」ダイアログを表示する。

 「Contents」の「Create project from existing source」を選択し、「Location:」にAndroid NDKで提供されているサンプルアプリケーション「hello-jni」のプロジェクトフォルダ「D:\android-ndk-1.5_r1\apps\hello-jni\project」を指定する(画像7)。また、「Build Target」に「Android 1.5」を指定する(画像8)


画像7 Eclipseの「New Android Project」ダイアログ(その1)

画像8 Eclipseの「New Android Project」ダイアログ(その2)

6.Android NDKサンプルアプリケーションの実行
 画面左側のPackage Explorerに表示されているサンプルアプリケーションのプロジェクト「HelloJni」を選択し、[Run]ボタンをクリックする。すると「Run As」ダイアログが表示されるので、ここで「Android Application」を選択し、[OK]ボタンをクリックする(画像9)

画像9 サンプルアプリケーションの実行 ※画像をクリックすると拡大表示します

 しばらくすると、Androidエミュレータが起動し、Android NDKサンプルアプリケーション「HelloJni」が起動する(画像10)(注7)

画像10 Androidエミュレータでの実行結果 ※画像をクリックすると拡大表示します

注7:環境によっては「HelloJni」が起動するまでに数分程度、待たされる場合がある。

参考:

・アプリケーションモジュール
コンパイルされたJavaアプリケーションは、apkファイル「HelloJni.apk」として、以下に格納される。

D:\android-ndk-1.5_r1\app\hello-jni\project\bin\HelloJni.apk

・アプリケーションのインストール
エミュレータ上で実行すると、仮想デバイス上でapkファイルがインストールされ、仮想デバイスのファイルシステム内の以下に格納される。

Javaアプリケーション

/data/dalvik-cache/data@com.example.hellojni.apk@classes.dex

C-Nativeライブラリ

/data/data/com.example.hellojni/lib/libhello-jni.so


7.C-Nativeライブラリの読み込みの確認
 最後に参考として、C-Nativeライブラリが正しく読み込めているかどうかを確認する方法を紹介する。

 エミュレータが起動している状態で、メニューから[Window]−[Open Perspective]−[DDMS]をクリックすると、Androidのデバッギングツール「DDMS(Dalvik Debug Monitor Service)」が表示される。

 DDMSの画面最下部にある「LogCat」ビューで以下のメッセージが表示されていれば、正しく読み込まれていることになる(画像11)

dalvikvm: Trying to load lib /data/data/com.example.hellojni/lib/libhello-jni.so
dalvikvm: Added shared lib /data/data/com.example.hellojni/lib/libhello-jni.so

画像11 「DDMS」画面 ※画像をクリックすると拡大表示します

 今回は、Android NDKとJNIによるAndroidの拡張方法について解説した。この仕組みを利用することで、ネイティブコードとの連携が可能となり、標準では不足しているAndroidの機能を拡張(組み込みデバイス固有の機能を追加)したり、既存資産を有効活用したりできる。

 ただし、拡張したインターフェイスに依存したアプリケーションを個々に開発すると、資産のポータビリティは減少してしまうので、例えば、バーコードリーダ・デバイスをAndroidに機能拡張する場合、バーコード用のデバイスドライバは、Androidで定義するインターフェイスに合わせ込むようにする。そして、合わせ込んだインターフェイスを利用するAndroidアプリケーション用ライブラリを定義して利用するなどの対応が必要となる。

 このような拡張インターフェイスを各メーカーが標準化していくことで、今後さまざまな組み込みデバイスで“専用のAndroid”が生まれてくることも十分に考えられる。Androidが組み込み分野にもたらす新たな可能性に大いに期待したい。

>>そのほかのAndroid関連記事をチェック

  • 連載バックナンバー
  • 全記事インデックス
  • 組み込み開発トップ
  • MONOistトップ

スキルアップ/キャリアアップ(JOB@IT)

スポンサーからのお知らせ

- PR -
@IT Sepcial

震災関連・復興支援情報

震災関連・復興支援情報
@IT MONOist/EE Times Japan/環境メディアの製造業技術者向け3メディアを中心に、震災関連/復興支援情報を集めました

次世代エンベデッドコーナー

次世代エンベデッド
“次世代”の組み込み機器を開発するエンジニアを支援するコーナー。新潮流・新技術をインタビューやコラム、解説記事で分かりやすく紹介!

Windows Embeddedコーナー

Windows Embedded
Windows Embedded専門コーナー。Windows Embedded StandardやWindows Embedded CEをはじめとする「Windows Embedded」ファミリの最新動向や技術情報をお届けします!!

Androidコーナー

Android
Android専門コーナー。組み込みデバイスへの適用からアプリケーション開発、イベントレポート、ニュースなどAndroidに関するさまざまな技術情報がここに集結!!

@IT MONOist 求人情報

- PR -