在Android应用程序中加载本机库时出错
我在Android应用程序中使用共享库(.so)时遇到了一些问题。 我有3个项目: < L> >本地代码Project = >在.so中构建C++文件 让我们称之为libNative.so在Android应用程序中加载本机库时出错,android,android-ndk,java-native-interface,loadlibrary,Android,Android Ndk,Java Native Interface,Loadlibrary,我在Android应用程序中使用共享库(.so)时遇到了一些问题。 我有3个项目: < L> >本地代码Project = >在.so中构建C++文件 让我们称之为libNative.so Android库项目=>调用本机代码。这个项目的输出是一个.jar文件。 让我们称之为“stack.jar” 使用Android库项目的Android应用程序示例 在示例应用程序(3)库的属性选项卡中,我将stack.jar文件配置为与.so库链接。My.so本机库很好地包含在生成的APK中。 =>Eclip
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库被很好地复制到data/data/mypackage/lib文件夹中。但我还是装不进去。是因为加载发生在.jar文件中,而不是直接发生在应用程序示例中吗???根据您生成的动态库名为libExample.so
try
{
System.loadLibrary("Example");
}
catch (UnsatisfiedLinkError use)
{
Log.e("JNI", "WARNING: Could not load native library");
}
应该有用您可以尝试使用ndk toolsPaste将代码包含到加载库中。顺便说一句,库应该在libs文件夹中。只需执行一个简单的操作:static{System.loadLibrary(“libNative”);}私有静态本机字符串myMethod(intp1,intp2);在我的项目中,我的libs(.so和.jar)已经在libs文件夹中。要加载“libfoo.so”,您需要
loadLibrary(“foo”)
。因此,听起来您需要将“libNative”更改为“Native”。另外,如果实际的dlopen()
调用失败,您将在logcat输出中的异常上方看到一个错误。还可以查看生成的存档的内容。这应该在bin子目录中。键入“aapt列表”。这就是上传到您设备的内容。你应该看到你的。所以在那里。嗨,有没有办法在Android库项目中调用这个?有什么办法吗?我不知道你想要什么。是否在Android库项目中包含动态库?JNI?