Android Studio 開発メモ Javahとの連携
ご存じ通り、Android開発中にJavaクラスからNativeコードを呼び出したり、逆にしたりする際に、JNI規格に従いC Headerファイルの作成やJava側のラッパクラスの用意が欠かせない作業でありますが、とても面倒だと思います。幸いJDK側が「Javah」という便利なツールを提供してくれてコマンドラインで地道に叩けば何とかなりますが、それでも不便と思う方が多いと思います。この作業をAndroid Studioに取り込み開発の効率の向上に繋がればと思います。
取り込み手順
1.プロジェクトを開いた状態で、「File」⇒「Settings」メニューをクリックし、「Settings」画面を表示させる。
2.「Settings」画面にて下図のように、「Tools」⇒「External Tools」パネルを特定し、「+」アイコンをクリックし、「Create Tool」画面を表示させる。
3.「Create Tool」画面にて、下記情報を入力する。
①Name
⇒JavaClass To C Header
②Description
⇒Generate JNI Special C Header File From JavaClass
③Program
⇒$JDKPath$/bin/javah
④Parameters
⇒-classpath $Classpath$ -v -jni $FileClass$
⑤Working directory
⇒$SourcepathEntry$\..\cpp
※$...$で囲んているのは、マクロ変数である。③~⑤項目の右側にある「Insert macro…」ボタンをクリックすることで、「Macros」画面を呼び出し、そこから自分に必要なマクロ変数を選んで、追加できる。(画面操作についてここで割愛)
※「Options」および「Show in」項目は一応全部入れて、より詳しい情報を得るには無難でしょう。
使用上に注意事項
基本的に、プロジェクト上にあるJavaクラスファイルを選んで、右クリックして、コンテキストメニューからの「External Tools」⇒「JavaClass To C Header」を呼び出すだけで済みます。
ただ、Android Studioは、プロジェクトをビルドしないとJavaクラスをコンパイルしてくれないクセがあるので、使用前に自ら「Build」⇒「Make Project」を行うほうが無難でしょう。特に「Javah」が下記エラーが発生する場合、必ず自前でビルドしてください。
エラー:’クラスのフルネーム’ のクラス・ファイルが見つかりませんでした。