JNIヘッダファイル作成手順|Android開発

   

手順

  • 呼び出す側のプログラム(宣言)をJavaで書きます。
    サンプル
    private final native int initializeJNIObject(long nativeObject);
  • JavaのソースをAndroid Studioなどでコンパイルしてclassファイルを生成します。
  • javah(※)を使ってclassファイルからC言語/C++のヘッダーファイルを生成します。
    コマンド書式
    javah -d 出力先ディレクトリ -classpath android.jar;クラスのあるディレクトリ クラス名

    実行例

    環境変数JAVA_HOME登録済みで、環境変数PATH%JAVA_HOME%\bin登録済みなら、javah実行前のチェンジディレクトリは不要です。
    Android Studio では

    • -classpathにターゲットのフォルダ指定が必要
      上記サンプルで”android.jar;”より後ろの部分
    • -classpathのフォルダはpackage nameのフォルダより上を指定
    • クラス名はフルのpackage nameが必要
  • 生成したヘッダーファイルの実装を.c/.cppで書きます。

※javac や java と同じディレクトリに入っています。

おまけ:Java側の記述

出力ファイル名

Android.mkに記述します。

LOCAL_MODULE := libmynative

呼び出し側

クラス内に以下を追加。 System.loadLibraryのパラメータlibNameは出力ファイル名から先頭の”lib”を省いたもの。

 - Android