如何加载一个或另一个.so?

时间:2012-06-05 17:10:19

标签: android-ndk java-native-interface

我的应用程序使用共享库,例如mylib.so

mylib.iso希望使用lib1.solib2.so中的API,具体取决于某些条件。

lib1.solib2.so都提供完全相同的API。

我只能在加载mylib.iso后计算条件。它不依赖于来自lib1.solib2.so的API,但我不能从java中做到:

static {
   if(nativeHasCondition()) System.loadLibrary("lib1");
   else System.loadLibrary("lib2");
}
System.loadLibrary("mylib");

}

因为nativeHasCondition()位于mylib.so

所以,我想我会以某种方式从我的本机代码加载lib1.solib2.iso,具体取决于我的本机代码中的一些计算。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

如果nativeHasCondition()是mylib.so的方法,那么你必须首先加载mylib.so。 然后你可以遵循这个条件。

答案 1 :(得分:0)

也许您应该将该代码放入一个单独的库中并首先加载它。如果你需要测试cpu大写,可能你应该从java中执行它,然后加载适当的libs(只要你设法加载你的mylib.so,它应该在其导入部分引用lib1.so或lib2.so)。 / p>