ET2009自分メモ:Android NDK/SDK解説(瀬戸 直喜 氏)
Embedded Technology 2009のスペシャルセッション
Android特別セミナー PartII:Android開発環境の解説及び開発事例紹介
の自分メモです。
Android NDK/SDK解説(瀬戸 直喜 氏)
日本Androidの会 四国支部 幹事・四国支部長/(株)ジャストシステムサービス 技術 受託開発グループ
NDK/SDKの概要や導入でした。初心者向けの内容となっています。
わかりやすかったです。ネイティブコードの利用はJNIのオーバーヘッドを考慮すべきとのこと。
ケースごとにオーバーヘッドを測定した具体的な事例があれば開発者大喜び。
NDK概要
- Android Native Development Kit
- ネイティブコードを作成する
- ARMv5TEの命令セットをサポート
NDKの内容
各種NativeAPIのヘッダ(libc, libm, etc)
意外にドキュメントは充実している。
HOWTO.TXT, SYSTEM-ISSUES.TXT, STABLE-APIS.TXT
libcドキュメント
注意事項
NDKのみでネイティブアプリ作成できるわけではない。
ネイティブコードを利用することで、必ずしもパフォーマンスアップするとは限らない
JNIでオーバーヘッドが発生する
良い利用例
- 信号処理
- 画像処理、物理シミュレーション
- 既存コードの再利用が要求されるもの
- NDKではガベージコレクションが走らないので。
配置、ルートパス設定、host-setup.shの実行
ネイティブコードのビルド
ソースコード、ヘッダ、makeファイルを設置
ダイナミックリンクの作成 Android.mk
スタティックライブラリとしてビルド
作成したコードに依存する共有ライブラリのビルド
- モジュール名
- スタテリックライブラリ名
- アプリから利用する共有ライブラリですよ、と記述する
Application.mkの記述
アプリケーションが必要とするネイティブモジュール(ライブラリ)を定義する
最後にビルド
make APP =
System.loadLibrary("twolib-second");
int z = add(x,y); //add関数はネイティブコードで記述されている
SDK1.6とSDK2.0の新機能
- 1.6: バッテリの消費量表示、音声読み上げ等
- 2.0: HTML5、BT2.1、カレンダー、マルチタッチ入力等