ash*_*lal 6 android intellij-idea shared-objects android-ndk
我有两个第三方本地库,说libfoo.so和libbar.so.我很难加载这两个库.我已将它们复制到libs适当的CPU arch(armeabi,mips和x86)下的文件夹中,并将Project结构>模块> Android> Structurelibs下的Native 目录设置为指向此libs文件夹.我只能加载一个库而不能加载另一个库.如果我尝试一次加载一个(删除其他库),它运行正常.我得到的例外是:
java.lang.UnsatisfiedLinkError: Couldn't load foo from loader dalvik.system.PathClassLoader
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能让IntelliJ或Android运行时找到这两个本地库?
加载多个原生库是完全可以的。只需将它们复制到 /libs/CPU_ARCH/ 目录中即可。然而,所有库都需要具有相同的架构。如果说 libfoo.so 是armeabi,但 libbar.so 是 x86,那么只会复制一个(根据我前段时间的试用)。
然后你可以加载它:
static {
//the following 3 are identical
//System.load(context.getApplicationInfo().dataDir + "/lib/libfoo.so");
//Runtime.getRuntime().load(context.getApplicationInfo().dataDir + "/lib/libfoo.so");
System.loadLibrary("foo");
System.loadLibrary("bar");
}
Run Code Online (Sandbox Code Playgroud)
如果 System.loadLibrary() 失败,那么您可以尝试使用 System.load() 或 Runtime.getRuntime().load() 加载完整路径
| 归档时间: |
|
| 查看次数: |
2433 次 |
| 最近记录: |