ネイティブライブラリのロード時に注意すること

例えば、libtest.soをロードしたい時、

System.loadLibrary("test");

とするのが一般的だが、もし/system/libと/data/data/(パッケージ名)/libとの両方に同じ名前のlibtest.soが存在したとき、/system/libが優先になり(機種依存?)、本来パッケージ内のlibを読み出したかったのに予期しないエラーに見舞われることがある。

そこで、以下のようにすると絶対パス指定ができ、想定外のライブラリがロードされることはなくなる

System.load("/data/data/(パッケージ名)/lib/libtest.so");