Presentation is loading. Please wait.

Presentation is loading. Please wait.

自社製ミドルウエアをDalvikと連携させることが可能になる

Similar presentations


Presentation on theme: "自社製ミドルウエアをDalvikと連携させることが可能になる"— Presentation transcript:

1

2 自社製ミドルウエアをDalvikと連携させることが可能になる
AndroidをJNIするメリット 自社製ミドルウエアをDalvikと連携させることが可能になる lib××

3 たとえば Android体重計を作る場合 Linuxのミドルウエアとして実装されている体重計制御プログラムをJavaからたたけるようにする。

4 adbでso形式ファイルをpushしandroidに登録
JniによるNative連携 Javaコードを作成 JavaコードをBuild javahでJni用ヘッダーを作成 Cコードを作成 Cコードをコンパイルしリンク adbでso形式ファイルをpushしandroidに登録

5 ライブラリのロード Jniインターフェース
Javaコードの作成 com.gclue.android.ET2008.NativeAdd.java package com.gclue.android.ET2008; import android.util.Log; public class NativeAdd { static { try { System.loadLibrary("NativeAdd"); } catch (Throwable e) { Log.e("TestJNI", e.toString()); } public native int readRfcomm2(byte[] array); ライブラリのロード Jniインターフェース

6 JavaコードをBuild NativeAdd.java javac NativeAdd.class

7 com_gclue_android_ET2008_NativeAdd.h
javahでJni用ヘッダーを作成 NativeAdd.class javah public native int readRfcomm2(byte[] array); com_gclue_android_ET2008_NativeAdd.h javah -classpath C:\android_seminar\ET2008\bin com.gclue.android.ET2008.NativeAdd

8 javahでJni用ヘッダーを作成 com_gclue_android_ET2008_NativeAdd.h
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_gclue_android_ET2008_NativeAdd */ #ifndef _Included_com_gclue_android_ET2008_NativeAdd #define _Included_com_gclue_android_ET2008_NativeAdd #ifdef __cplusplus extern "C" { #endif /* * Class: com_gclue_android_ET2008_NativeAdd * Method: readRfcomm2 * Signature: ([B)I */ JNIEXPORT jint JNICALL Java_com_gclue_android_ET2008_NativeAdd_readRfcomm2 (JNIEnv *, jobject, jbyteArray); #ifdef __cplusplus } #endif #endif

9 Cコードを作成 com_gclue_android_ET2008_NativeAdd.c
#include "com_gclue_android_ET2008_NativeAdd.h" #include <stdio.h> #include <sys/file.h> JNIEXPORT jint JNICALL Java_com_gclue_android_ET2008_NativeAdd_readRfcomm2 (JNIEnv *env, jobject object, jbyteArray array) { /* 処理を記述 */ return 1; }

10 com_gclue_android_ET2008_NativeAdd.cをコンパイル
com_gclue_android_ET2008_NativeAdd.h arm-none-linux-gnueabi-gcc.exe LinuxのJavaのフォルダのinclude以下 を使用。 com_gclue_android_ET2008_NativeAdd.o arm-none-linux-gnueabi-gcc.exe I.\include I.\include\linux fpic c com_gclue_android_ET2008_NativeAdd.c arm-none-linux-gnuebi-gccは、下記URLよりダウンロード。

11 arm-none-linux-gnueabi-ld.exe リンク
arm-none-linux-gnueabi-ld.exe T armelf_linux_eabi.xsc shared o libNativeAdd.so com_gclue_android_ET2008_NativeAdd.o armelf_linux_eabi.xsc はarm-none-linux-gnuebi-gcc, arm-none-linux-gnuebi-ldをインストールしたフォルダの「\Sourcery G++ Lite\arm-none-linux-gnueabi\lib\ldscripts」に格納されている。

12 com.gclue.ET2008.NativeAdd.class com_gclue_android_ET2008_NativeAdd.h
生成したファイル com.gclue.ET2008.NativeAdd.java com.gclue.ET2008.NativeAdd.class com_gclue_android_ET2008_NativeAdd.h com_gclue_android_ET2008_NativeAdd.c com_gclue_android_ET2008_NativeAdd.o libNativeAdd.so

13 libNativeAdd.soを/system/libに登録
Androidへ登録 libNativeAdd.soを/system/libに登録 libNativeAdd.so /system/lib adb push libNativeAdd.so /system/lib

14 Javaから呼び出し NativeAdd lib = new NativeAdd(); int len; byte[] buf = new byte[1024]; len = lib.readRfcomm2(buf);


Download ppt "自社製ミドルウエアをDalvikと連携させることが可能になる"

Similar presentations


Ads by Google