我们的APK有一个共享库(libxyz.so)。安装该APK后,它会将.so文件推送到/ data / app-lib / packagename /.
我们希望在安装APK时自动将.so推送到/ system / lib。但是,/ system / lib需要权限和特权。
我们想将.so推送到/ system / lib的原因是它也可以被其他应用程序加载。 (两个应用程序可以有任何其他方式共享相同的libxyz.so)
实现目的的可能方法是什么?
答案 0 :(得分:0)
我们想要而不是走这条路,在安装APK时应自动将.so推送到/ system / lib
这是不可能的。
我们想将.so推送到/ system / lib的原因是它也可以被其他应用程序加载
即使这是可能的,这也是一个坏主意。您无法强制用户升级将使用此库的所有应用程序。除非您非常小心,否则应用程序会崩溃,因为他们期待旧版本的库并且您将公共副本更新为新版本。这就是为什么Google竭尽全力尽量减少API更改,即使代价是开发人员希望拥有的某些内容不在公共API中。这通常称为"dependency hell"。
实现目的的可能方法是什么?
欢迎您创建包含此.so
的Android自定义版本,创建包含该自定义版本的ROM mod,并将该ROM mod部署到您控制的设备。
答案 1 :(得分:0)
如果您有root设备,可以使用cp
将.so
复制到/system/lib
Process process = Runtime.getRuntime().exec("su");
DataOutputStream writer = new DataOutputStream(process.getOutputStream());
writer.writeBytes("cp /your/path/xxx.so /system/lib/xxx.so");
writer.flush();