Presentation is loading. Please wait.

Presentation is loading. Please wait.

Androidソースコード公開後のJNI

Similar presentations


Presentation on theme: "Androidソースコード公開後のJNI"— Presentation transcript:

1 Androidソースコード公開後のJNI
株式会社  ブリリアントサービス 代表取締役 杉本 礼彦

2 ■JNIはJavaとネイティブ(Javaより下の層、C言語やC++で書かれる)と連携する為に整備された仕組みです。

3 ■なぜJNI? ・ネイティブに存在する資産を使えます。 ・速度が速い。
 ・ネイティブに存在する資産を使えます。  ・速度が速い。  ・現在のAndroidに存在しないAPIを拡張するとなると必須の技術です。   ・ AndroidのパッケージもJNIで実現されている。

4 ■ハンズオンと言いながらJNIの使い方は説明しません。
使い方の参考になる資料は 2009年1月19日 日本Androidの会の勉強会で JNIによるAndroid API拡張  株式会社GClue 佐々木さん

5 ■ここではAndroidのパッケージのソースコードを例にJNIの仕組みについてお話します。
ソースコードを持っている方は一緒に見ていただけると良いと思います。

6 ■native という予約語 abstractとの違い
abstractもnativeも型のみ宣言(クラスやメソッドが実装されていない )と言う意味では同じだが、実体の場所が異なる。abstractは 派生クラスで実装。では native は?

7 ■Androidのパッケージの場所 \\frameworks\base\core\java\android

8 ■native methodを持つJavaファイル
 Cameraを例に見てみてみましょう。  native の説明にあった通りです。 \\frameworks\base\core\java\android\hardware\Camera.java 178行目 public native final void startPreview();

9 ■native methodの実体を持つC言語ファイル
\\frameworks\base\core\jni\android_hardware_Camera.cpp 311行目 status_t CameraService::Client::startPreview()

10 ■Camera classのメソッドテーブル
\\frameworks\base\core\jni\android_hardware_Camera.cpp 450行目(同じファイル) static JNINativeMethod camMethods[] = { { "startPreview", "()V", (void *)android_hardware_Camera_startPreview },

11 ■メソッドをJNIに登録している箇所 \\frameworks\base\core\jni\android_hardware_Camera.cpp 538行目(同じファイル) // Register native functions return AndroidRuntime::registerNativeMethods(env,                 "android/hardware/Camera", camMethods,                   NELEM(camMethods));

12 ■VMからJNIを使われるところ dalvik\vm\Native.c 65行目からの関数
void dvmResolveNativeMethod(const u4* args, JValue* pResult, const Method* method, Thread* self)  func = dvmLookupInternalNativeMethod(method); ★85行目  ~ ~ ~ dfunc(args, pResult, method, self); ★103行目 return; } dvmLookupInternalNativeMethod   85行目で発見された関数は dfunc(args, pResult, method, self);    103行目で実行されてます。

13 ■nativeの実体は?  nativeの予約語で宣言された実体はネイティブ(C言語やC++で書かれた部分)にあるということです。

14 ■もちろんJNIを使って拡張したインターフェースはそのプラットフォームでしか動きません。

15 ■JNIの話 おしまい

16 ■広報 技術評論社 SoftwareDesign 2009年3月号 記事が載りました。

17 ■広報  ・Androidの自社端末開発中

18 ■広報 次はかっこいい端末を作りたいのでオープンハードウェアで協力者募集!(予定)

19 ありがとうございました


Download ppt "Androidソースコード公開後のJNI"

Similar presentations


Ads by Google