====== 003 JNIを利用してC言語の関数を実装する ====== ===== 概要 ===== Javaで作成された簡単な関数を、JNIを利用してC言語で実装してみます。 // 加算した値を返す。 protected int addValue(int value1, int value2) { return value1 + value2; } これをC言語に置き換えてみます。 ==== jniフォルダの作成 ==== プロジェクトのディレクトリにjniフォルダを作成します。この中にソースコードとメイクファイルを配置していきます。 ==== ソースコードの追加 ==== #include // 加算した値を返す。 jint Java_com_example_addapp_MainActivity_addValue( JNIEnv* env, jobject thiz, jint value1, jint value2 ) { return value1 + value2; } 関数名が長くなっていますがこれは "Java_パッケージ名_クラス名_メソッド名" というメソッド名の規約があるためです。これを間違えていると実行時にエラーになります。 ==== Android.mkファイルの追加 ==== -Android用のmakefileを追加します LOCAL_PATH := $(call my-dir) #変数の初期化 include $(CLEAR_VARS) #出力するモジュール名 LOCAL_MODULE := calcvalue #モジュールを構成するC/C++のソースコード LOCAL_SRC_FILES := calcvalue.c #共有モジュールを出力 include $(BUILD_SHARED_LIBRARY) ==== 呼び出し方 ==== // ロードするモジュールを指定 static { System.loadLibrary("calcvalue"); } // 加算した値を返す。(nativeをつけることでJNI関数であることをを宣言する) protected native int addValue(int value1, int value2); これでネイティブコードでの実装に置き換えることが出来ます。