2013-11-28 42 views
0

我有一个工作项目,我使用JNI来调用C库中的方法。无法将.so库从工作项目集成到另一个

我的项目结构:

enter image description here

而且代码加载库:

static { 
    System.loadLibrary("RemoveBackground"); 
} 

它的工作原理好。但直到我尝试将此功能集成到其他项目中。我复制了jnilibs文件夹。还有全部three classes没有RemoveBackgroundActivity(测试活动)。当我编译这个项目,我有一个exeption:

1663-1663/com.example.Activities E/dalvikvm﹕ The lib may be ARM... trying to load it [/data/data/com.example.Activities/lib/libRemoveBackground.so] using houdini 
1663-1663/com.example.Activities E/dalvikvm﹕ dvmHoudiniDlopen returns 0x9833cf40 with bool=1 

你知道如何解决这个问题或其他方式来做到这一点?

+0

1)我不确定IDEA,但在Eclipse中,您必须在项目中启用本地开发。你不能只复制目录。 2)我怀疑你需要libs目录,除非你连接其他库。我的一部分认为它试图加载在另一个项目中建立的库。 3)Application.mk中有什么?通常没有必要。 4)除非你明确注册本地方法,否则JNI调用可能需要更新,因为包名称(尽管这可能是未来的问题)。 – Dave

回答

0

我想你尝试使用的RemoveBackground.so本地库不是为ARM架构而构建的。我不确定Linux是什么,但是在Mac OS X上,您可以使用lipo命令检查本机库支持的体系结构。例如:

lipo -info /usr/lib/RemoveBackground.so 
相关问题