通过安装APK在Android平台的/ system / lib中推送.so

时间:2014-05-09 12:07:43

标签: android

我们的APK有一个共享库(libxyz.so)。安装该APK后,它会将.so文件推送到/ data / app-lib / packagename /.

我们希望在安装APK时自动将.so推送到/ system / lib。但是,/ system / lib需要权限和特权。

我们想将.so推送到/ system / lib的原因是它也可以被其他应用程序加载。 (两个应用程序可以有任何其他方式共享相同的libxyz.so)

实现目的的可能方法是什么?

2 个答案:

答案 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();