避免从系统路径加载本机库

时间:2015-01-17 18:54:42

标签: java android

我们的SDK需要两个本地库中的一个,例如libaaa.solibbbb.so

在我们的Java代码中,我们写了

private static boolean jniloaded = false;
static {
    try {
        System.loadLibrary("aaa");
        jniloaded = true;
    } catch (Exception e) {
        jniloaded = false;
    }
    if (!jniloaded) {
        try {
            System.loadLibrary("bbb");
            jniloaded = true;
        } catch (Exception e) {
            jniloaded = false;
        }
    }
}

使用此代码段,库加载顺序为:

  1. 在app的库路径中加载libaaa.so
  2. 如果1失败,请在系统库路径中加载libaaa.so
  3. 如果2也失败了,请在app的库路径中加载libbbb.so
  4. 如果3仍然失败,请在系统路径中加载libbbb.so。
  5. 如何将其重新排序为:

    1. 在app的库路径中加载libaaa.so
    2. 如果1失败,请在app的库路径中加载libbbb.so
    3. 如果2也失败,请在系统库路径中加载libaaa.so
    4. 如果3仍然失败,请在系统路径中加载libbbb.so。
    5. 没有任何关于应用程序包名称的知识?

      我尝试解析System.getProperty("java.library.path")以获取库路径并自行迭代System.load()。但是System.getProperty("java.library.path")不包含应用的库路径。它只包含系统库路径。

0 个答案:

没有答案