链接到Android平台中自定义位置的共享对象

时间:2016-08-15 06:33:24

标签: android c android-ndk shared-libraries

我使用NDK构建了一个本机C用户空间应用程序(在NDK中使用BUILD_EXECUTABLE属性)。

我的应用程序包含使用少量共享对象的主程序(我使用BUILD_SHARED_LIBRARY创建的共享库)。

我可以正常运行应用程序(我正在使用LG-G4)但是:仅当我将* .so文件复制到手机上的/ system / lib和/ system / lib64时才有效。

有没有办法将* .so文件复制到某个自定义位置(例如/ data / my_dir),并且应用程序仍然可以在运行时链接到* .so?

1 个答案:

答案 0 :(得分:0)

我知道现在回答已经很晚了,但无论如何,这个答案对于遇到这样的问题的其他人可能会有所帮助。您不必将* .so库从您的本机库目录复制到任何地方,只需告诉ProcessBuilder您的库所在的位置如下:

//your process builder which executes
ProcessBuilder pb = new ProcessBuilder(argvlist);
//lbpath - path (your native dir) of shared libraries which are used by executable
pb.environment().put("LD_LIBRARY_PATH", lbpath);