ANDROID HACKS #47  アプリケーションから JNI を使う 担当:かわらたん Twitter : @pfkawara Blog : http://kawara-tan.blogspot.com/ 09/19/11
この資料について <ul><li>この資料は下記の本をベースに勉強会で作成した資料です。 </li></ul><ul><ul><li>『 Android Hacks 』(株式会社ブリリアントサービス著、オライリー・ジャパン刊) </li></u...
アジェンダ <ul><li>NDK で JNI を使用する </li></ul><ul><li>JNI メソッドを定義したアプリケーションを作成する </li></ul><ul><li>JNI ライブラリを実装する </li></ul><ul>...
1. NDK で JNI を使用する 09/19/11
1. NDK で JNI を使用する <ul><li>NDK を使用して JNI ライブラリの実装を行うと、アプリケーション配布形式である apk ファイルにネイティブライブラリとして同梱する事が出来る。 </li></ul><ul><li>ソ...
2. JNI メソッドを定義したアプリケーションを作成する 09/19/11
2. JNI メソッドを定義したアプリケーションを作成する <ul><li>Android プロジェクトを Eclipse で作る </li></ul><ul><ul><li>「新規 Android プロジェクト」ダイアログの「ロケーション」で...
<ul><li>MainActivity </li></ul>2. JNI メソッドを定義したアプリケーションを作成する 09/19/11 Activity が初めて参照されたときに JNI ライブラリを読み込む JNI ライブラリのメソッドを...
3. JNI ライブラリを実装する 09/19/11
3. JNI ライブラリを実装する <ul><li>JNI ヘッダ ( ヘッダファイル ) を作成 </li></ul><ul><ul><li>※ クラスファイルからヘッダーファイルを作るので、 Java ソース (MainActivity) ...
3. JNI ライブラリを実装する <ul><li>ネイティブコードを C 言語で実装 </li></ul><ul><ul><li>JNI ヘッダと同じディレクトリにソースを置く </li></ul></ul><ul><ul><li>JNI ヘ...
3. JNI ライブラリを実装する <ul><li>Android.mk ファイル作成 </li></ul><ul><ul><li>JNI ライブラリをビルドするための make ファイル (Android.mk) を C のソースコードと同じ...
4. JNI ライブラリをビルドする  09/19/11
4. JNI ライブラリをビルドする <ul><li>make コマンドでビルド </li></ul><ul><ul><li>apps ディレクトリに配置されているプロジェクトを指定 </li></ul></ul><ul><li>ビルドが完了す...
5. Hack をさらに Hack する 09/19/11
5. Hack をさらに Hack する <ul><li>ごめん。業務多忙のため、これ以上できませんでした </li></ul>09/19/11
参考 URL <ul><li>Android Developers </li></ul><ul><ul><li>http://developer.android.com/intl/ja/index.html </li></ul></ul><ul...
Upcoming SlideShare
Loading in...5
×

Android Hacks - Hack47

773

Published on

「Android Hacks ―プロが教えるテクニック & ツール」(株式会社ブリリアントサービス 著)を教材とした勉強会でのまとめ資料です。

http://www.oreilly.co.jp/books/9784873114569/

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
773
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Android Hacks - Hack47

  1. 1. ANDROID HACKS #47 アプリケーションから JNI を使う 担当:かわらたん Twitter : @pfkawara Blog : http://kawara-tan.blogspot.com/ 09/19/11
  2. 2. この資料について <ul><li>この資料は下記の本をベースに勉強会で作成した資料です。 </li></ul><ul><ul><li>『 Android Hacks 』(株式会社ブリリアントサービス著、オライリー・ジャパン刊) </li></ul></ul><ul><li>この本の紹介ページが下記にあります。 </li></ul><ul><ul><li>http://www.oreilly.co.jp/books/9784873114569/ </li></ul></ul>09/19/11
  3. 3. アジェンダ <ul><li>NDK で JNI を使用する </li></ul><ul><li>JNI メソッドを定義したアプリケーションを作成する </li></ul><ul><li>JNI ライブラリを実装する </li></ul><ul><li>JNI ライブラリをビルドする </li></ul><ul><li>Hack をさらに Hack する </li></ul><ul><li>※ JNI ・・・ Java Native Interface の略。 Java と他言語 ( 大抵は C/C++) を連携するための仕組み </li></ul>09/19/11
  4. 4. 1. NDK で JNI を使用する 09/19/11
  5. 5. 1. NDK で JNI を使用する <ul><li>NDK を使用して JNI ライブラリの実装を行うと、アプリケーション配布形式である apk ファイルにネイティブライブラリとして同梱する事が出来る。 </li></ul><ul><li>ソースの配置場所 </li></ul><ul><ul><li>アプリ: {NDK_HOME}/apps/sampleHack47 </li></ul></ul><ul><ul><li>JNI ライブラリ: {NDK_HOME}/apps/sampleHack47/project/jni </li></ul></ul><ul><li>名前について </li></ul><ul><ul><li>JNI ライブラリモジュール名はアプリのプロジェクト名と同じにする </li></ul></ul><ul><ul><li>Make して出来るライブラリファイル名はプレフィックスに” lib” 、拡張子は” .so” になる。 </li></ul></ul><ul><ul><ul><li>例:プロジェクト名 (JNI ライブラリモジュール名 ) が” sample” ならば </li></ul></ul></ul><ul><ul><ul><li>   libsample.so </li></ul></ul></ul><ul><ul><ul><li>※ 拡張子の so は Shared Object の略 </li></ul></ul></ul>09/19/11
  6. 6. 2. JNI メソッドを定義したアプリケーションを作成する 09/19/11
  7. 7. 2. JNI メソッドを定義したアプリケーションを作成する <ul><li>Android プロジェクトを Eclipse で作る </li></ul><ul><ul><li>「新規 Android プロジェクト」ダイアログの「ロケーション」で、あらかじめ決めたアプリの場所を選択する </li></ul></ul><ul><ul><ul><li>先ほどの例で言うと、 {NDK_HOME}/apps/SampleHack47/projet </li></ul></ul></ul>09/19/11
  8. 8. <ul><li>MainActivity </li></ul>2. JNI メソッドを定義したアプリケーションを作成する 09/19/11 Activity が初めて参照されたときに JNI ライブラリを読み込む JNI ライブラリのメソッドを定義する (native 修飾子をつけて Java 以外でコンパイルされている事を示す )
  9. 9. 3. JNI ライブラリを実装する 09/19/11
  10. 10. 3. JNI ライブラリを実装する <ul><li>JNI ヘッダ ( ヘッダファイル ) を作成 </li></ul><ul><ul><li>※ クラスファイルからヘッダーファイルを作るので、 Java ソース (MainActivity) のコンパイルが済んでいる事が前提 </li></ul></ul><ul><li>生成されたヘッダファイルは以下 </li></ul>09/19/11 %> cd NDK_HOME/apps/SampleHack47/project %> javah –classpath bin –d jni sample.hack47.MainActivity
  11. 11. 3. JNI ライブラリを実装する <ul><li>ネイティブコードを C 言語で実装 </li></ul><ul><ul><li>JNI ヘッダと同じディレクトリにソースを置く </li></ul></ul><ul><ul><li>JNI ヘッダに宣言された JNI 関数を実装する </li></ul></ul>09/19/11
  12. 12. 3. JNI ライブラリを実装する <ul><li>Android.mk ファイル作成 </li></ul><ul><ul><li>JNI ライブラリをビルドするための make ファイル (Android.mk) を C のソースコードと同じディレクトリに作る </li></ul></ul><ul><ul><li>ファイルの中身は以下 </li></ul></ul>09/19/11 ライブラリモジュール名を指定 ソースファイルを指定 my-dir マクロで現在のディレクトリを指定 LOCAL_PATH を除く LOCAL_xxx の定義をクリーンアップ 共有ライブラリを作成する際に指定
  13. 13. 4. JNI ライブラリをビルドする 09/19/11
  14. 14. 4. JNI ライブラリをビルドする <ul><li>make コマンドでビルド </li></ul><ul><ul><li>apps ディレクトリに配置されているプロジェクトを指定 </li></ul></ul><ul><li>ビルドが完了すると、 SampleHack47/libs/armeabi/ の下にライブラリファイルが出来る </li></ul>09/19/11 %> cd NDK_HOME %> make APP=SampleHack47
  15. 15. 5. Hack をさらに Hack する 09/19/11
  16. 16. 5. Hack をさらに Hack する <ul><li>ごめん。業務多忙のため、これ以上できませんでした </li></ul>09/19/11
  17. 17. 参考 URL <ul><li>Android Developers </li></ul><ul><ul><li>http://developer.android.com/intl/ja/index.html </li></ul></ul><ul><li>JNI メモ (Hishidama’s Java native interface Memo) </li></ul><ul><ul><li>http://www.ne.jp/asahi/hishidama/home/tech/java/jni.html </li></ul></ul><ul><li>Android NDK で JNI を使用してアプリを高速可にするには (@IT) </li></ul><ul><ul><li>http://www.atmarkit.co.jp/fsmart/articles/android15/android15_3.html </li></ul></ul><ul><li>ARM で使われる二つの ABI </li></ul><ul><ul><li>http://www.oidon.net/linux/arm-eabi-oabi </li></ul></ul>09/19/11
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×