我在Android应用程序中使用共享库(.so)时遇到了一些麻烦。 我有3个项目:
原生代码项目=>在.so库中构建c ++文件 我们称之为 libNative.so
Android库项目=>调用本机代码。该项目的输出是.jar文件。 我们称之为“ stack.jar ”
使用android库项目的Android应用程序示例。
在示例应用程序(3)库的属性选项卡中,我将stack.jar文件配置为与.so库链接。我的.so本地库很好地包含在生成的APK中。 => Eclipse将其复制到“ lib / armeabi”文件夹中。
如果我在手机上启动APK,则会收到以下错误:
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load libNative:
findLibrary returned null at
java.lang.Runtime.loadLibrary(Runtime.java:365) at
java.lang.System.loadLibrary(System.java:535)
我猜错误是Eclipse将.so库复制到lib文件夹而不是 libs ,并且System.loadLibrary正在寻找路径 libs / armeabi ......,对吗?或者我可能完全错了!
非常感谢你的帮助,
编辑:安装APK时,.so lib可以很好地复制到 data / data / mypackage / lib 文件夹中。不过,我无法加载它。是因为加载发生在.jar文件中而不是直接发生在应用程序示例中吗?
答案 0 :(得分:3)
根据您已生成一个名为 libExample.so
的动态库在fadden中写下以下代码:
try
{
System.loadLibrary("Example");
}
catch (UnsatisfiedLinkError use)
{
Log.e("JNI", "WARNING: Could not load native library");
}
应该有效!