我有一个应用程序,其中包含一个共享库和一个使用该共享库的小型可执行文件。
这个小型可执行文件(约2KB)在assets中,我将它写入缓存目录,可以通过调用Context.getCacheDir()
来获取。我可以在使用ProcessBuilder
启动进程之前,在环境变量中放置LD_LIBRARY_PATH=/data/data/my.app.package/lib
来启动我的小型可执行文件。
是否有更好的方法来设置库路径?
是否有一种方法可以获取库目录而不是硬编码它?
我有一个应用程序,其中包含一个共享库和一个使用该共享库的小型可执行文件。
这个小型可执行文件(约2KB)在assets中,我将它写入缓存目录,可以通过调用Context.getCacheDir()
来获取。我可以在使用ProcessBuilder
启动进程之前,在环境变量中放置LD_LIBRARY_PATH=/data/data/my.app.package/lib
来启动我的小型可执行文件。
是否有更好的方法来设置库路径?
是否有一种方法可以获取库目录而不是硬编码它?
通过ProcessBuilder.environment()设置库路径对我来说是合理的,您可以通过调用Context.getApplicationInfo()获取库目录:
ApplicationInfo info = getApplicationInfo();
Log.i(TAG, "native library dir = " + info.nativeLibraryDir);