Android Hacks - Hack47
Upcoming SlideShare
Loading in...5
×
 

Android Hacks - Hack47

on

  • 947 views

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

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

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

Statistics

Views

Total Views
947
Views on SlideShare
947
Embed Views
0

Actions

Likes
0
Downloads
3
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Android Hacks - Hack47 Android Hacks - Hack47 Presentation Transcript

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