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

标签 android c android-ndk shared-libraries

我已经使用 NDK(使用 NDK 中的 BUILD_EXECUTABLE 属性)构建了一个原生 C 用户空间应用程序。

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

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

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

最佳答案

我知道现在回答已经晚了,但无论如何,这个答案可能对遇到此类问题的其他人有所帮助。您不必将 *.so 库从您的 native 库目录复制到任何地方,只需告诉 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);

关于android - 链接到 Android 平台中自定义位置的共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38950315/

相关文章:

Android Studio 原生代码编译速度慢

android - 如何在 onActivityResult 回调中从 PDF 选择器 Intent 库获取的 pdfUri 获取文件路径?

android:drawableLeft margin 和/或 padding

Android 源代码生成器 : Error: Can't find bundle for base name messages. AndroidJpsBundle

android.database.sqlite.SQLiteCantOpenDatabaseException : unknown error (code 14): Could not open database

c - typedef 的命名方案

opencv - 不再支持 android.useDeprecatedNdk=true

android - for 循环崩溃 (Android NDK)

c - 从C文件中读取移动数据(字符串和数字)

c - wait() 系统调用 - child 会忽略它吗?