AndroidでJNIを呼び出す方法
Android でネイティブメソッドを呼び出すために JNI(Java ネイティブインターフェイス)を使うには、次の手順で行うことができます。
- ネイティブメソッドの実装: 必要なネイティブメソッドを C または C++ ファイルで実装します。ネイティブコードのコンパイルとビルドには、NDK (ネイティブ開発キット) を使用できます。
- ネイティブライブラリの作成: コンパイラを使用してCまたはC++のファイルをネイティブライブラリファイル(.soファイル)にコンパイルする。Android StudioのNDKプラグインを使用してネイティブライブラリを自動的にビルドすることができる。
- JNI インタフェースの作成:Java クラスでネイティブメソッドを宣言し、native キーワードでマークします。例:
public class NativeClass {
static {
System.loadLibrary("native-lib");
}
public native String nativeMethod();
}
- JNIヘッダーファイルの生成:javah命令を使用して、Javaコードとネイティブメソッドを接続するためのJNIヘッダーファイルが生成されます。 例として、コマンドラインで次のコマンドを実行します。
javah -jni com.example.NativeClass
このコマンドは com_example_NativeClass.h という名前のヘッダーファイルを生成します。
- com_example_NativeClass.h
#include <jni.h>
#include "com_example_NativeClass.h"
JNIEXPORT jstring JNICALL Java_com_example_NativeClass_nativeMethod(JNIEnv *env, jobject) {
// 实现本地方法的代码
// ...
return env->NewStringUTF("Hello from JNI!");
}
- Java コードからネイティブメソッドを呼び出すJava コードから、ネイティブメソッドを含むクラスを呼び出します。 例:
NativeClass nativeObj = new NativeClass();
String result = nativeObj.nativeMethod();
System.out.println(result);
- アプリを実行する: アプリケーションをビルドして実行し、ネイティブメソッドが正しく呼び出されることを確認する。
JNI経由でネイティブメソッドを呼び出す場合、CあるいはC++のプログラミングの知識が必要になる点、NDKや関連するビルド設定を正しく設定する必要がある点に注意してください。より詳しい手順とサンプルについては、Android DevelopersのJNIに関するガイドを参照してください。