私はオープンソースのエミュレータ プロジェクトを開発しています。このプロジェクトには、カスタマイズ可能な複数のネイティブ プラグインがあります。これらのプラグインは、ネイティブの共有オブジェクト ライブラリ (.so ファイル) として構築され、JNI を介してネイティブと Java の間のさまざまなインターフェイスを備えています。これまでに作成されたプラグインごとに APK を配布するのではなく、ユーザーが独自のカスタム プラグインを作成できるようにするために、アプリのインストール後にいつでもこれらの .so ファイルをインポートする方法が必要です。
ファイルをフォルダー /data/data/[package_name] にコピーできることがわかりましたが、lib/ サブフォルダーにはコピーできません (「システム」グループが所有しているため)。Java で JNI インターフェースを利用するには、System.loadLibrary( libname ); を呼び出す必要があります。ただし、これには .so ファイルを lib/ サブフォルダーに配置する必要があるようです。これを回避する唯一の方法は、ユーザーにルート化されたデバイスを要求することです。これを達成する別の方法はありますか?