Android NDKでjava.lang.UnsatisfiedLinkError
Android NDK、いいですよね。
でもいろいろとエラー(特にコンパイルエラー)が出てきて大変です。
今回は実行時エラーが出ました。
java.lang.UnsatisfiedLinkError
です。
このエラーはライブラリを読み込むのを忘れていたり、
関数名を間違えていたりすると発生するようです。
今回はLibraryNotFoundではなく「関数が見つからない」という内容でだったため前者とは違い、
NDK用の関数を自動生成していたので後者のと同じ可能性もありませんでした。
いろいろ調べていた結果、nativeメソッドの宣言をstaticにしていたために関数が自動生成されていなかったのが原因だったようです。
// bef public native void yourMethod() ; // aft static public native void yourMethod() ;
staticだと便利だったのですが、生成はstaticを外す必要があるようです。
関数を生成し終わった後はstaticにしても大丈夫っぽいです。
詳しく知らないでなんとなくコード書いてるからこんなエラーに遭遇するんです。
ちゃんと一から勉強するか、諦めるかしかないですね。