Tips: JNIのnativeライブラリの置き場所

/system をread-writeモードでremountしてからsoファイルを書き込むということでも可能だが、/system 以下を書き換えるのは抵抗がある、という方は別の場所にライブラリを置けばいい。

/data/data//lib ディレクトリに置いたライブラリも、Dalvik上のアプリケーションからライブラリのロードパスとして認識されているので、そこに追加のsoファイルを置けばいい。

ただし、/data/data//lib は所有者が system:system となっている*1ため、通常のユーザ権限ではファイルを追加できないので、root権限での作業が必要。

/data/data//lib は別のアプリケーションからはライブラリのロードパスとは認識されていないので、アプリケーション専用のnativeライブラリを置くという観点でも良い場所である。

一般のアプリケーションのapkの中にsoファイルを入れたものを提供できるようになった場合*2、この手作業が自動化されるのだろう。

*1:Dalvikアプリケーションがネット上などからnativeライブラリを取得し、自分の権限で書き込み可能な場所に置くという方法で、任意のnativeライブラリをロードできるようなことが起きないようにしていると思われる。

*2:標準アプリケーションのapkファイルには、soファイルが含まれるものがすでにある。