2016-08-15 38 views
1

我已经使用NDK构建了本地C用户空间应用程序(使用NDK中的BUILD_EXECUTABLE属性)。链接到Android平台中自定义位置中的共享对象

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

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

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

+0

你不需要任何特殊权限'rwx'位于'/ data/local/tmp'中的文件。如果问题仍然存在,您可以尝试。 – Onik

回答

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);