JNI DETECTED ERROR IN APPLICATION|Android開発

   

JNIの実行時に
Call<type>Method
などでtype部分の型を正しく指定しない場合にJNI DETECTED ERROR IN APPLICATIONが発生することがあります。
これは主にAndroid 5.0 LollipopからJNI層でJavaのライブラリ関数をコールするための指定が厳密になったためのようです。

例えば、Lollipop以前では、

としなければならない箇所で、

としてもコールできていました。これが駄目になっています。
要は正しい型のメソッドを指定しろって事ですね。

また、GetMethodIDなどの引数でメソッドのシグネチャやクラス名を指定する際、名前空間の区切りとして、以前は.(カンマ)もOKでしたが、必ず/区切りで記述しなければいけません。

Lollipop以前

どちらでもOKだった。

Lollipop以降

下記しか駄目。

 - Android