我正在开发一个开源模拟器项目,它有多个可定制的原生插件。这些插件构建为原生共享对象库(.so 文件),并通过 JNI 在原生和 Java 之间提供各种接口。与其将 APK 与每个创建的插件一起分发,而且为了允许人们构建自己的自定义插件,我需要一种在安装应用程序后随时导入这些 .so 文件的方法。
我发现我可以将文件复制到文件夹 /data/data/[package_name],但不能复制到 lib/ 子文件夹(因为它归“系统”组所有)。要在 Java 中使用 JNI 接口,我必须调用 System.loadLibrary( libname ); 但是,这似乎要求 .so 文件位于 lib/ 子文件夹中。我能想到的唯一方法是要求用户拥有一个根设备。还有另一种方法可以做到这一点吗?