如何在运行二进制文件时加载android库?

问题描述:

所以,我有这个引用一些库的可执行二进制文件。当我尝试使用的Runtime.exec()运行它,它给我的错误流说法错误:如何在运行二进制文件时加载android库?

link_image[1891]: 7176 could not load needed library 'XXX.so' for 'YYY' (load_library[1093]: Library 'XXX.so' not found)CANNOT LINK EXECUTABLE 

我有XXX.so库,但我不知道我应该把它相对于二进制YYY。我希望这为无根设备工作。

顺便说一句,我并不是很善于构建一般的东西,所以如果您认为我在构建二进制文件时遇到了问题,请随时指出。

你有两个选择

  • 构建这个二进制用-static标志,我想这是可以使用的dlopen来动态地加载该库的最佳方法
  • ,如
void *g_handle = NULL; 
g_handle = dlopen("/system/lib/libskia.so", RTLD_LAZY); 
_skFT_Init_FreeType = dlsym(g_handle, "FT_Init_FreeType"); 

/**do something */ 

dlclose(g_handle); 

请参阅https://*.com/a/12934668其中真正建议使用通用方式设置LD_LIBRARY_PATH的包装。您也可以在修改过的环境下使用ProcessBuilder。见https://*.com/a/8962189/192373

+1

哦!我一直在寻找如何在Java中设置环境变量这么久!谢谢! – mghareeb 2014-09-13 19:26:52