我有一个 Android 活动,我正在执行 NDK 编译代码(命令行程序):
Runtime.getRuntime().exec(myCommand);
并加载所需的共享库:
static {
System.loadLibrary(myLib);
}
但是在运行我的项目并从错误流打印输出时,我收到以下错误:
link_image[1963]: 7520 could not load needed library 'libmyLib.so' for './myCommand'
(load_library[1105]: Library 'libmyLib.so' not found)CANNOT LINK EXECUTABLE
我保证libmyLib.so
确实存在于我的项目libs/armeabi/
目录下,并将其复制到我的 Android 设备/data/data/myProject.path.package/lib/
目录下。可执行文件和库的所有者和组system:system
以及权限也可以。
在开始时从 adb shell 执行命令时,我得到了同样的错误,但是我可以设置LD_LIBRARY_PATH
它并且运行正常:
./adb shell
export LD_LIBRARY_PATH=/data/data/myProject.path.package/lib:$LD_LIBRARY_PATH
/data/data/myProject.path.package/myCommand
所以问题是,如何从 java Android 项目中做到这一点?
注意:我在 GT-P1010 上使用 Linux、Eclipse + Sequoyah、NDK-r5b、Android 2.3.6 (API 10)。